回顾模块中的导入

时间:2010-05-29 17:47:41

标签: python pygame feedback

我还在学习python,在玩了pygame后,我注意到我正在重新导入我正在导入的模块中的东西,我已经导入了。

import pygame

例如,我在一个单独的文件中有一些类,但我也必须将pygame导入到该文件中才能使它们正常工作。它实际上导入了两次代码吗?它会减慢我的程序吗?或者它只是从缓存中拉出相同的导入,但如果它这样做,为什么我需要再次导入它?

在lisp中是否有类似(加载)的东西只是拉入代码,就像它是主文件的一部分一样?

谢谢

3 个答案:

答案 0 :(得分:2)

后续导入会从sys.modules中提取缓存的模块引用。您需要导入才能将模块添加到当前命名空间/范围。

答案 1 :(得分:2)

  

当Python导入模块时,它首先检查模块注册表(sys.modules)以查看模块是否已导入。如果是这种情况,Python会按原样使用现有的模块对象。

答案 2 :(得分:0)

知道了!
好的,我找到了我要找的东西。我刚刚发现重新导入我已导入的代码很笨重,特别是当文件不是库或其他东西时,只需拆分代码。 在这里找到它:http://norvig.com/python-lisp.html

execfile("file.py")

完美地回答我的问题。它解析文件并在其中执行代码。使用它我能够取出额外的import语句并且运行完美:D