use*_*328 5 python import module package
更具体地说,假设我有多个.py文件,其中main.py导入了os,pygame,math和其他所有.py文件,mymodule01.py等文件。
我的问题是,每当main.py调用我的.py文件之一,并且该文件包含os.listdir()之类的内容时,我总是收到错误消息,说“未定义os”之类的东西。
我应该只在我编写的每个.py文件中导入所有必需的模块,还是有更好的方法,例如每个文件都可以识别的集中导入?尤其是对于pygame,这将非常令人困惑,因为我必须在每个文件中初始化pygame才能使用它的功能,更不用说我是否想在屏幕上显示内容。
python模块和软件包文档没有太大帮助,或者我真的很慢,还考虑到在遵循文档之后,在包含以下内容的init .py文件中添加例如import mymodule01.py之后,我仍然遇到未找到的错误。夹。
我应该在我编写的每个 .py 文件中导入所有必需的模块吗
是的。
尤其是使用 pygame,这会非常令人困惑,因为我必须在每个文件中初始化 pygame 才能使用它的功能
不,只初始化一次。该模块只有一个副本。
我想您可能会觉得“导入”在其他语言中的作用类似于“包含”。它没有。
每个模块对象都是一个单例。多次初始化模块代码不会导致性能下降或危险。
此外,每个文件都有自己的范围,因此在您的示例中,如果您foo = 1在 main.py 中定义,foo则在mymodule01.py. 你必须import main; main.foo看到它(不是你应该看到的)
你抱怨,但这是一个比这更好的系统 include