4 回答

TA貢獻2041條經驗 獲得超4個贊
reload
from importlib import reload # Python 3.4+ only.import foowhile True: # Do some things. if is_changed(foo): foo = reload(foo)
reload
imp
imp
importlib
reload
reload
重新編譯Python模塊的代碼,重新執行模塊級的代碼,定義一組新的對象,這些對象綁定到模塊字典中的名稱。擴展模塊的init函數不是第二次調用。與Python中的所有其他對象一樣,只有在引用計數降到零之后,舊對象才會被回收。更新模塊命名空間中的名稱以指向任何新的或更改的對象。其他對舊對象的引用(例如模塊外部的名稱)不會反彈以引用新對象,如果需要的話,必須在它們出現的每個名稱空間中進行更新。
Foo
Foo
foo

TA貢獻1775條經驗 獲得超11個贊
imp.reload(module)
imp
importlib
I 想importlib.reload(module)

TA貢獻1804條經驗 獲得超8個贊
您可以使用sys.getrefcount()查找引用的實際數量。
>>> import sys, empty, os>>> sys.getrefcount(sys)9>>> sys.getrefcount(os)6>>> sys.getrefcount(empty)3
大于3的數字表示很難擺脫模塊。自帶的“空”模塊(不包含任何內容)應該在之后被垃圾收集。
>>> del sys.modules["empty"]>>> del empty
第三個引用是getrefcount()函數的工件。

TA貢獻1993條經驗 獲得超6個贊
reload(module)
isinstance
reload()
sys.modules
sys.modules
None
添加回答
舉報