python3中reload()函式報錯怎麼解決

duanhao發表於2021-09-11

python3中reload()函式報錯怎麼解決

reload函式是使用模組名稱,而不是變數名稱,也就是說當你把它改變了名稱,它也是載入原來的名稱。

當使用reload時,這個模組會被重新編譯,新的模組替換原來的模組。如果之前從這個模組建立的例項仍然使用舊的模組實現。特別是使用from-import語句載入的名稱,也不會被更新。

# File: builtin-reload-example-1.py
from imp import reload
 
import hello
reload(hello)
reload(hello)

輸出如下

=== RESTART: D:/work/csdn/python_Game1/example/builtin-reload-example-1.py ===
hello again, and welcome to the show
hello again, and welcome to the show
hello again, and welcome to the show
>>>

這裡helo.py程式碼如下:

print('hello again, and welcome to the show')

總結  :   

1. 如果模組在語法上是正確的,但在初始化過程中失敗,則匯入過程不能正確地將模組的名字繫結到符號表中。這時,必須在模組能被重新載入之前使用import()函式載入該模組。

2. 重新載入的模組不刪除最初舊版本模組在符號表中的登記項。

3. 如果一模組利用from。。。import。。。方式從另一模組匯入物件,reload()函式不重新定義匯入的物件,可利用import。。。形式避免這個問題。

4. 提供類的重新載入模組不影響所提供類的任何已存例項---已存例項將繼續使用原來的方法定義,只有該類的新例項使用新格式。這個原則對派生類同樣適用。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2836742/,如需轉載,請註明出處,否則將追究法律責任。

相關文章