如果我有一個文件運行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