在python中重新導入模塊


 

重新加載模塊

倘若,更改了已經在 Python shell 中導入的模塊,然后重新導入該模塊,Python 會認為“我已經導入了該模塊,不需要再次讀取該文件”,所以更改將無效

要解決這個問題,有以下幾種方式:

  1. 最簡單、最有效的方法:重新啟動 Python shell。但是,這也有缺點,特別是丟失了 Python shell 名稱空間中存在的數據以及其他導入模塊中的數據。
  2. 對於簡單的情況,可以使用 Python 的reload()函數。在許多情況下,在編輯一個模塊之后就足夠了。
  3. 對於更復雜的情況,重新加載被編輯的模塊也需要重新加載其依賴/導入的模塊(因為它們必須作為被編輯模塊初始化的一部分進行初始化),所以 IPython 的autoreload擴展很有用。

PS:

下面主要介紹第 2 種方式 - reload(),其他方式自行嘗試。
reload()是 Python 提供的一種簡潔的方式,在不同的 Python 版本中有不同的表現形式:

>>> import importlib >>> import hello Hello, Python! # 修改前的內容 >>> >>> importlib.reload(hello) I am coming... # 修改后的內容 <module 'hello' from '/home/wang/Projects/hello.py'> 

另外的參考

為防止兩個模塊互相導入的問題,Python默認所有的模塊都只導入一次,如果需要重新導入模塊,
Python2.7可以直接用reload(),Python3可以用下面幾種方法:

方法一:基本方法
from imp import reload
reload(module)

方法二:按照套路,可以這樣
import imp
imp.reload(module)

方法三:看看imp.py,有發現,所以還可以這樣
import importlib
importlib.reload(module)

方法四:根據天理,當然也可以這樣
from importlib import reload
reload(module)


參考原文: https://www.jianshu.com/p/02c24557e91e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM