如果我有一个文件运行import math
,第二个文件也有import math
并导入第一个文件,是否会在内存中加载两次math
模块?python模块是否被导入两次?
3
A
回答
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只需要在字典中查看模块名称。
0
模块被导入一次。第二次,
import math
遇到,所发生的只是已导入的模块绑定到导入模块的名称空间中的名称数学。
0
相关问题
- 1. 什么可能导致python模块导入两次?
- 2. 导入时间模块两次
- 3. 如何防止两次导入模块?
- 4. Python是否将模块路径中的所有模块导入?
- 5. 是否有可能在Python中的“导入模块”中获得“导入模块”?
- 6. 导入模块详细输出意味着模块被加载两次
- 7. Python - 导入模块只有一次
- 8. python模块的多次导入
- 9. 检查AngularJS模块是否被引导
- 10. Python模块导入*
- 11. Python模块导入
- 12. 导入Python模块
- 13. Python导入模块
- 14. python导入模块
- 15. Python模块是否被编译?
- 16. python是否会多次加载模块?
- 17. python会在多次导入模块时优化模块吗?
- 18. 导入模块多次
- 19. 是否可以告诉IDLE python shell每次启动时自动导入模块?
- 20. 根据测试导入被测模块而不是模块级导入?
- 21. 的Python:模块的导入模块
- 22. 检查我的模块是否导入
- 23. Typescript是否用`es2015`模块导入`lodash`?
- 24. 在几个模块输出两次Python的Python输出两次
- 25. Python子模块:“导入为”与“导入”
- 26. Python导入模块vs导入_module
- 27. Python:已导入的导入模块
- 28. 导入Python模块错误
- 29. Python模块导入问题
- 30. 导入Python模块失败
否............. – thefourtheye
Python导入不会导入多次,如果您想再次导入,您可以使用[reload()](http://docs.python。 org/2/library/functions.html#reload) –
@KobiK - 'reload'已在Python 3.x中移除。在Python 3.2或更高版本中,您可以使用['imp.reload'](http://docs.python.org/3.2/library/imp.html#imp.reload)。 – iCodez