如果我有一个运行import math
的文件,以及另一个同时具有import math
AND且导入第一个文件的文件,是否会在内存中加载math
模块两次? / p>
答案 0 :(得分:6)
执行import math
时,会将其导入并放入sys.modules
。接下来,您import math
检查math
是否在sys.modules
中并从那里获取。
所以它只导入一次。
http://effbot.org/zone/import-confusion.htm
当Python导入模块时,它首先检查模块注册表 (sys.modules)查看模块是否已导入。如果那是 例如,Python按原样使用现有的模块对象。
否则,Python会做这样的事情:
- 创建一个新的空模块对象(这本质上是一个字典)
- 将该模块对象插入sys.modules字典
- 加载模块代码对象(如有必要,首先编译模块)
- 在新模块的命名空间中执行模块代码对象。代码分配的所有变量都可以通过模块对象获得。
醇>此 意味着导入已经导入的模块相当便宜; Python只需要在字典中查看模块名称。
答案 1 :(得分:0)
模块导入一次。第二次
import math
遇到,所有发生的事情是已经导入的模块绑定到导入模块命名空间中的数学名称。
答案 2 :(得分:0)
Python模块未多次导入,因此运行import
语句命令两次将不会重新加载模块。
如果要重新加载,则必须执行reload语句。