tem*_*ame 3 python import python-3.x
如果我有一个文件运行import math,第二个文件也有import mathAND导入第一个文件,那么它是否会math在内存中加载模块两次?
当你这样做的import math时候会导入并输入sys.modules.然后import math检查是否math进入sys.modules并从中获取.
所以它只导入一次.
http://effbot.org/zone/import-confusion.htm
当Python导入模块时,它首先检查模块注册表(sys.modules)以查看模块是否已导入.如果是这种情况,Python会按现有模块对象使用.
否则,Python会做这样的事情:
- 创建一个新的空模块对象(这本质上是一个字典)
- 将该模块对象插入sys.modules字典中
- 加载模块代码对象(如有必要,首先编译模块)
- 在新模块的命名空间中执行模块代码对象.代码分配的所有变量都可以通过模块对象获得.
这意味着导入已经导入的模块相当便宜; Python只需要在字典中查看模块名称.
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |