標籤:python 過渡性模組重載
0.說明
因為正常情況下使用reload重載模組時只是重載頂層模組,對於模組內部的import語句並不會執行重載,也就是說,reload執行的重載只是針對底層的,即top level only。
有必要寫一個過渡性模組重載的函數。
1.過渡性模組重載
下面的代碼來自《Python學習手冊》第四版P605,可以完美地實現這個功能:
"""reloadall.py: transitively reload nested modules"""import typesfrom imp import reloaddef 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.作用
如果需要互動式地測試較大型的系統時,過渡性重載就顯得很有用了,可以幫我們節省很多時間。
本文出自 “香飄葉子” 部落格,請務必保留此出處http://xpleaf.blog.51cto.com/9315560/1894484
Python過渡性模組重載(遞迴重載模組)