我还在学习python,在玩了pygame后,我注意到我正在重新导入我正在导入的模块中的东西,我已经导入了。
import pygame
例如,我在一个单独的文件中有一些类,但我也必须将pygame导入到该文件中才能使它们正常工作。它实际上导入了两次代码吗?它会减慢我的程序吗?或者它只是从缓存中拉出相同的导入,但如果它这样做,为什么我需要再次导入它?
在lisp中是否有类似(加载)的东西只是拉入代码,就像它是主文件的一部分一样?
谢谢
答案 0 :(得分:2)
后续导入会从sys.modules
中提取缓存的模块引用。您需要导入才能将模块添加到当前命名空间/范围。
答案 1 :(得分:2)
当Python导入模块时,它首先检查模块注册表(
sys.modules
)以查看模块是否已导入。如果是这种情况,Python会按原样使用现有的模块对象。
答案 2 :(得分:0)
知道了!
好的,我找到了我要找的东西。我刚刚发现重新导入我已导入的代码很笨重,特别是当文件不是库或其他东西时,只需拆分代码。
在这里找到它:http://norvig.com/python-lisp.html
execfile("file.py")
完美地回答我的问题。它解析文件并在其中执行代码。使用它我能够取出额外的import语句并且运行完美:D