Python過渡性模組過載(遞迴過載模組)

2021-09-03 09:30:27 字數 1061 閱讀 1602

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實現 ...