更具体地说,假设我有一些.py文件,其中main.py导入的内容如os,pygame,math和我所有的其他.py文件,mymodule01.py等。
我的问题是每当main.py调用我的一个.py文件并且该文件包含类似os.listdir()之类的东西时,我一直收到错误,说“os未定义”之类的内容。
我应该只在我编写的每个.py文件中导入所有必需的模块,还是有更好的方法,比如每个文件都能识别的集中导入?使用pygame尤其会让人感到非常困惑,因为我必须在每个文件中初始化pygame才能使用它的功能,更不用说我是否想要在屏幕上显示某些内容。
python模块和包文档没有多大帮助,或者我真的很慢,还考虑到在关注文档之后,我在添加例如在包含文件夹的 init .py文件中导入mymodule01.py。
答案 0 :(得分:4)
我应该只在每个.py文件中导入所有必需的模块吗
是
使用pygame尤其会让我感到非常困惑,因为我必须在每个文件中初始化pygame才能使用它的函数
不,只需初始化一次。该模块只有一个副本。
答案 1 :(得分:4)
我认为您可能会认为“导入”在其他语言中的行为类似于“包含”。它没有。
每个模块对象都是单例。不会出现性能下降或多次初始化模块代码的危险。
此外,每个文件都有自己的范围,因此在您的示例中,如果您在main.py中定义foo = 1
,则foo
中将无法显示mymodule01.py
。您必须import main; main.foo
才能看到它(不是您应该的)
你发牢骚,但这是一个比include