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