基于Python2、Python3中reload()的不同用法介紹
reload() 簡(jiǎn)介
作用:用于重新載入之前載入的模塊
語法格式:reload(module)
參數(shù):module為模塊對(duì)象,必須已經(jīng)被加載
返回值:返回模塊對(duì)象
注意事項(xiàng):
多次重復(fù)使用import語句時(shí),不會(huì)重新加載被指定的模塊,只是把對(duì)該模塊的內(nèi)存地址給引用到本地變量環(huán)境。
reload()會(huì)重新加載已加載的模塊,重新編譯模塊,重新執(zhí)行模塊級(jí)代碼,但是__init__函數(shù)不再重復(fù)執(zhí)行,原來已經(jīng)使用的實(shí)例還是會(huì)使用舊的模塊,而新生產(chǎn)的實(shí)例會(huì)使用新的模塊;reload后還是用原來的內(nèi)存地址;不支持from ... import ...格式的模塊進(jìn)行重新加載。
大部分模塊設(shè)計(jì)為只加載一次,重新加載可能導(dǎo)致一些問題,因此,慎用reload()。
使用sys.modules可查看已加載的模塊。
Python2
在Python2中,reload()為內(nèi)置函數(shù)。
例:重設(shè)字符編碼
>>>import sys
>>> sys.getdefaultencoding() # 當(dāng)前默認(rèn)編碼
'ascii'
>>> reload(sys) # 使用 reload
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf8') # 設(shè)置編碼
>>> 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()的不同用法介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)矩陣加法和乘法的方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)矩陣加法和乘法的方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)矩陣的加法與乘法運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
Python讀入mnist二進(jìn)制圖像文件并顯示實(shí)例
這篇文章主要介紹了Python讀入mnist二進(jìn)制圖像文件并顯示實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
簡(jiǎn)單的命令查看安裝的python版本號(hào)
在本篇內(nèi)容里小編給大家整理的是關(guān)于簡(jiǎn)單的命令查看安裝的python版本號(hào)的文章,需要的朋友們可以參考下。2020-08-08

