0.說明
因為正常情況下使用reload過載模組時只是過載頂層模組,對於模組內部的import語句並不會執行過載,也就是說,reload執行的過載只是針對頂層的,即top level only。
有必要寫乙個過渡性模組過載的函式。
1.過渡性模組過載
下面的**來自《python學習手冊》第四版p605,可以完美地實現這個功能:
"""
reloadall.py: transitively reload nested modules
"""import types
from imp import reload
def status(module):
print('reloading ' + module.__name__)
def transitive_reload(module, visited):
if not module in visited:
status(module)
reload(module)
visited[module] = none
for attrobj in module.__dict__.values():
if type(attrobj) == types.moduletype:
transitive_reload(attrobj, visited)
def reload_all(*args):
visited = {}
for arg in args:
if type(arg) == types.moduletype:
transitive_reload(arg, visited)
if __name__ == '__main__':
import reloadall
reload_all(reloadall)
2.作用
如果需要互動式地測試較大型的系統時,過渡性過載就顯得很有用了,可以幫我們節省很多時間。
flash cs4 是過渡性產品嗎?
今天看到網上一條flash cs5的資訊這真的是一條讓人興奮的訊息,其實cs5到來是預料中的事情。flash 的 編輯器一直是人們唾罵的焦點,編輯 速度提示過於少,debug速度慢,讓人學習起來記憶的東西太多,反而增加不必要的腦力開銷。cs 5的到來,是否改變cs4的尷尬的局面呢?我們拭目以待。對於...
央視 工信部對騰訊採取過渡性的行政指導措施
techweb 11月24日訊息,據央視報道,今年以來,在www.cppcns.com工信部開展的app侵害使用者權益專項整治中,騰訊公司旗下9款產品存在違規行為,共計4批次被公開通報,違反了2021年資訊通訊業行風糾風相關要求。按照有關部署,工信部對騰訊公司採取過渡性的行政指導措施,要求對於即將發...
python 基礎 模組 遞迴 )
模組 是乙個命名空間,也是乙個模組物件 補充 容器 資料的封裝 函式 語句的封裝 類 方法和屬性的封裝 含義 模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。這也是使用 python 標準庫的方法。模組就是程式 作用 1封裝 2實現 ...