如果我有一个运行的文件import math
,还有第二个文件import math
AND 导入第一个文件,是否加载math
模块在内存中两次?
当你这样做时import math
它被导入并放入sys.modules
。接下来你做import math
检查是否math
is in sys.modules
并从那里获取。
所以它只被导入一次。
http://effbot.org/zone/import-confusion.htm http://effbot.org/zone/import-confusion.htm
当Python导入模块时,它首先检查模块注册表
(sys.modules) 查看模块是否已导入。如果那是
在这种情况下,Python 按原样使用现有的模块对象。
否则,Python 会执行以下操作:
- 创建一个新的空模块对象(这本质上是一个字典)
- 将该模块对象插入 sys.modules 字典中
- 加载模块代码对象(如有必要,请先编译模块)
- 在新模块的命名空间中执行模块代码对象。代码分配的所有变量都可以通过模块对象使用。
这
意味着导入已经导入的模块相当便宜;
Python 只需要在字典中查找模块名称即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)