Python 的reload()方法__Python

來源:互聯網
上載者:User
reload()函數將以前置入過的模組再載入一次。重新載入(reload)包括最初匯入模組時應用的分析過程和初始化過程。這樣就允許在不退出解譯器的情況下重新載入已更改的Python模組。

若干注意事項:
1. 如果模組在文法上是正確的,但在初始化過程中失敗,則匯入處理程序不能正確地將模組的名字綁定到符號表中。這時,必須在模組能被重新載入之前使用import()函數載入該模組。
2. 重新載入的模組不刪除最初舊版本模組在符號表中的登記項。
3. 如果一模組利用from。。。import。。。方式從另一模組匯入對象,reload()函數不重新定義匯入的對象,可利用import。。。形式避免這個問題。

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


在python中,每一個以 .py結尾的Python檔案都是一個模組。其他的檔案可以通過匯入一個模組來讀取該模組的內容。匯入從本質上來講,就是載入另一個檔案,並能夠讀取那個檔案的內容。一個模組的內容通過這樣的屬效能夠被外部世界使用。

  這種基於模組的方式使模組變成了Python程式架構的一個核心概念。更大的程式往往以多個模組檔案的形式出現,並且匯入了其他模組檔案的工具。其中的一個模組檔案被設計成主檔案,或叫做頂層檔案(就是那個啟動後能夠運行整個程式的檔案)。

  預設情況下,模組在第一次被匯入之後,其他的匯入都不再有效。如果此時在另一個視窗中改變並儲存了模組的原始碼檔案,也無法更新該模組。這樣設計的原因在於,匯入是一個開銷很大的操作(匯入必須找到檔案,將其編譯成位元組碼,並且運行代碼),以至於每個檔案、每個程式運行不能夠重複多於一次。

  那麼想要使得Python在同一次會話中再次運行檔案,該怎麼辦呢。這就需要調用imp標準庫模組中的reload函數。如下所示

 

1 from  imp import reload reload(MyModule)

  

  這樣就可以重新裝載MyModule模組,使得修改有效。

  注意:reload函數希望獲得的參數是一個已經載入了的模組對象的名稱,所以如果在重載之前,請確保已經成功地匯入了這個模組。

  說明:Python 3.0把reload內建函數移到了imp標準庫模組中。它仍然像以前一樣重載檔案,但是,必須匯入它才能使用。在Python 3.0中,運行import imp並使用imp.reload(M),或者像上面所示的,運行from imp import並使用reload(M)

機器學習實戰P22頁

>>>reload(KNN)改為

Python 3.5.2中

>>>import importlib

>>>importlib.reload(KNN)

在python2中,reload()是內建函數,能夠直接使用。

但是在python3中,直接使用reload()會報錯,需要從imp中匯入。

用法為

[html]  view plain  copy  print ? >>>from imp import reload   >>>reload(xyz)  


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.