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

來源:互聯網
上載者:User

標籤: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過渡性模組重載(遞迴重載模組)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.