2014-01-19 90 views
3

如果我有一個文件運行import math,第二個文件也有import math並導入第一個文件,是否會在內存中加載兩次math模塊?python模塊是否被導入兩次?

+0

否............. – thefourtheye

+0

Python導入不會導入多次,如果您想再次導入,您可以使用[reload()](http://docs.python。 org/2/library/functions.html#reload) –

+2

@KobiK - 'reload'已在Python 3.x中移除。在Python 3.2或更高版本中,您可以使用['imp.reload'](http://docs.python.org/3.2/library/imp.html#imp.reload)。 – iCodez

回答

6

當你做import math它被導入並放入sys.modules。接下來你做import math檢查是否mathsys.modules並從那裏取得。

所以它只輸入一次。

http://effbot.org/zone/import-confusion.htm

當Python導入一個模塊,它首先檢查模塊註冊表 (sys.modules中),看看是否該模塊已被導入。如果這是 大小寫,Python將使用現有的模塊對象。

否則,Python做這樣的事情:

  1. 創建一個新的空模塊對象(這基本上是一個字典)
  2. 插入字典sys.modules該模塊對象
  3. 裝入模塊代碼對象(如有必要,先編譯模塊)
  4. 在新模塊的名稱空間中執行模塊代碼對象。代碼分配的所有變量將通過模塊對象提供。

這個 意味着導入已經導入的模塊相當便宜; Python只需要在字典中查看模塊名稱。

0

模塊被導入一次。第二次,

import math 

遇到,所發生的只是已導入的模塊綁定到導入模塊的名稱空間中的名稱數學。

0

Python模塊不會導入多次,因此運行兩次import語句命令將不會重新加載模塊。

如果您希望重新加載它,您必須執行reload語句。

+0

這可能是一個評論,看上面。 –