您可以在多个 类 中导入相同的模块吗(Python 中接受的约定是什么)?
Can you import the same module in multiple classes (What is the accepted convention in Python)?
我创建了一个 Jupter Notebook 文件来处理项目并对给定的数据集进行数据分析。在笔记本中,我 downloaded/cleaned 数据并实现了不同的回归算法。 Jupyter notebook 文件变得很长(行),现在执行/滚动文档的速度很慢(滞后)。
我决定将项目转移到 Spyder IDE。我想将 python 代码拆分成不同的 classes 以便更容易 运行 和 interpret/understand 我的代码(每个 class 中的不同功能)。
例如:
- 我有一个 create_dataframe.py 文件,其中包含 class 用于下载数据集和创建数据框。
- 我有一个 clean_dataframe.py 文件,其中包含 class 用于清理和执行初始数据可视化。
- 这两个 class 都被导入到 main.py 文件并从那里调用。
在所有 3 个文件中,我必须导入 pandas/numpy 个包。
我的问题是在不同 classes 中导入包时接受的约定是什么?
在不同的 classes 中导入相同的包是正常的做法,还是有办法在 main.py 文件中导入包,然后在所有其他文件中访问该包?
在使用它的每个文件中重新导入相同的模块是正常的并且可以接受。这有助于您的代码更明确地说明其名称空间中的事物起源于何处 - import numpy
比 from myOtherModule import numpy
更好。通常,您只想从文件或模块中导入 源自该文件或模块 的内容。任何其他共享资源可能应该直接从共享源导入。
这不会导致任何内存问题,因为 python 解释器只会加载任何给定的模块一次(除非您使用 importlib
或类似的行为来扰乱该行为或明确地重新加载模块).第一次导入模块时,它被缓存在 sys.modules
中,随后的导入检查 sys.modules
以查看模块是否已加载,然后再尝试加载它。
For further reading on this topic, see python's documentation of the import system.
我创建了一个 Jupter Notebook 文件来处理项目并对给定的数据集进行数据分析。在笔记本中,我 downloaded/cleaned 数据并实现了不同的回归算法。 Jupyter notebook 文件变得很长(行),现在执行/滚动文档的速度很慢(滞后)。
我决定将项目转移到 Spyder IDE。我想将 python 代码拆分成不同的 classes 以便更容易 运行 和 interpret/understand 我的代码(每个 class 中的不同功能)。
例如:
- 我有一个 create_dataframe.py 文件,其中包含 class 用于下载数据集和创建数据框。
- 我有一个 clean_dataframe.py 文件,其中包含 class 用于清理和执行初始数据可视化。
- 这两个 class 都被导入到 main.py 文件并从那里调用。
在所有 3 个文件中,我必须导入 pandas/numpy 个包。
我的问题是在不同 classes 中导入包时接受的约定是什么? 在不同的 classes 中导入相同的包是正常的做法,还是有办法在 main.py 文件中导入包,然后在所有其他文件中访问该包?
在使用它的每个文件中重新导入相同的模块是正常的并且可以接受。这有助于您的代码更明确地说明其名称空间中的事物起源于何处 - import numpy
比 from myOtherModule import numpy
更好。通常,您只想从文件或模块中导入 源自该文件或模块 的内容。任何其他共享资源可能应该直接从共享源导入。
这不会导致任何内存问题,因为 python 解释器只会加载任何给定的模块一次(除非您使用 importlib
或类似的行为来扰乱该行为或明确地重新加载模块).第一次导入模块时,它被缓存在 sys.modules
中,随后的导入检查 sys.modules
以查看模块是否已加载,然后再尝试加载它。
For further reading on this topic, see python's documentation of the import system.