导入python模块仅用于一个文件

时间:2011-12-03 19:49:26

标签: 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文件中导入mymodule01.py。

2 个答案:

答案 0 :(得分:4)

  

我应该只在每个.py文件中导入所有必需的模块吗

  

使用pygame尤其会让我感到非常困惑,因为我必须在每个文件中初始化pygame才能使用它的函数

不,只需初始化一次。该模块只有一个副本。

答案 1 :(得分:4)

我认为您可能会认为“导入”在其他语言中的行为类似于“包含”。它没有。

每个模块对象都是单例。不会出现性能下降或多次初始化模块代码的危险。

此外,每个文件都有自己的范围,因此在您的示例中,如果您在main.py中定义foo = 1,则foo中将无法显示mymodule01.py。您必须import main; main.foo才能看到它(不是您应该的)

你发牢骚,但这是一个比include

更好的系统