基于Python2、Python3中reload()的不同用法介紹
reload() 簡介
作用:用于重新載入之前載入的模塊
語法格式:reload(module)
參數(shù):module為模塊對象,必須已經(jīng)被加載
返回值:返回模塊對象
注意事項:
多次重復使用import語句時,不會重新加載被指定的模塊,只是把對該模塊的內(nèi)存地址給引用到本地變量環(huán)境。
reload()會重新加載已加載的模塊,重新編譯模塊,重新執(zhí)行模塊級代碼,但是__init__函數(shù)不再重復執(zhí)行,原來已經(jīng)使用的實例還是會使用舊的模塊,而新生產(chǎn)的實例會使用新的模塊;reload后還是用原來的內(nèi)存地址;不支持from ... import ...格式的模塊進行重新加載。
大部分模塊設計為只加載一次,重新加載可能導致一些問題,因此,慎用reload()。
使用sys.modules可查看已加載的模塊。
Python2
在Python2中,reload()為內(nèi)置函數(shù)。
例:重設字符編碼
>>>import sys >>> sys.getdefaultencoding() # 當前默認編碼 'ascii' >>> reload(sys) # 使用 reload <module 'sys' (built-in)> >>> sys.setdefaultencoding('utf8') # 設置編碼 >>> sys.getdefaultencoding() 'utf8' >>>
Python3
在Python3中,reload()被轉(zhuǎn)移到imp模塊以及importlib模塊中。
Python3.4之前在imp中,Python3.4之后imp模塊逐步被廢棄,reload()移至importlib模塊中。
>>> import sys >>> reload(sys) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'reload' is not defined >>> from imp import reload __main__:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses >>> reload(sys) <module 'sys' (built-in)> >>> from importlib import reload >>> reload(sys) <module 'sys' (built-in)>
以上這篇基于Python2、Python3中reload()的不同用法介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Perl中著名的Schwartzian轉(zhuǎn)換問題解決實現(xiàn)
這篇文章主要介紹了Perl中著名的Schwartzian轉(zhuǎn)換問題解決實現(xiàn),本文詳解講解了Schwartzian轉(zhuǎn)換涉及的排序問題,并同時給出實現(xiàn)代碼,需要的朋友可以參考下2015-06-06OpenCV圖像縮放之cv.resize()函數(shù)詳解
resize函數(shù)opencv中專門用來調(diào)整圖像大小的函數(shù),下面這篇文章主要給大家介紹了關于OpenCV圖像縮放之cv.resize()函數(shù)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-09-09Python argparse命令參數(shù)與config配置參數(shù)示例深入詳解
這篇文章主要介紹了Python argparse命令參數(shù)與config配置參數(shù),argparse是Python內(nèi)置的一個用于命令項選項與參數(shù)解析的模塊,通過在程序中定義好我們需要的參數(shù),然后在程序啟動命令行傳遞我們想要改變的參數(shù)2023-03-03