您可以在多个 类 中导入相同的模块吗(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 中的不同功能)。

例如:

在所有 3 个文件中,我必须导入 pandas/numpy 个包。

我的问题是在不同 classes 中导入包时接受的约定是什么? 在不同的 classes 中导入相同的包是正常的做法,还是有办法在 main.py 文件中导入包,然后在所有其他文件中访问该包?

在使用它的每个文件中重新导入相同的模块是正常的并且可以接受。这有助于您的代码更明确地说明其名称空间中的事物起源于何处 - import numpyfrom myOtherModule import numpy 更好。通常,您只想从文件或模块中导入 源自该文件或模块 的内容。任何其他共享资源可能应该直接从共享源导入。

这不会导致任何内存问题,因为 python 解释器只会加载任何给定的模块一次(除非您使用 importlib 或类似的行为来扰乱该行为或明确地重新加载模块).第一次导入模块时,它被缓存在 sys.modules 中,随后的导入检查 sys.modules 以查看模块是否已加载,然后再尝试加载它。

For further reading on this topic, see python's documentation of the import system.