reload() 簡(jiǎn)介
作用:用于重新載入之前載入的模塊
語(yǔ)法格式:reload(module)
參數(shù):module為模塊對(duì)象,必須已經(jīng)被加載
返回值:返回模塊對(duì)象
注意事項(xiàng):
多次重復(fù)使用import語(yǔ)句時(shí),不會(huì)重新加載被指定的模塊,只是把對(duì)該模塊的內(nèi)存地址給引用到本地變量環(huán)境。
reload()會(huì)重新加載已加載的模塊,重新編譯模塊,重新執(zhí)行模塊級(jí)代碼,但是__init__函數(shù)不再重復(fù)執(zhí)行,原來(lái)已經(jīng)使用的實(shí)例還是會(huì)使用舊的模塊,而新生產(chǎn)的實(shí)例會(huì)使用新的模塊;reload后還是用原來(lái)的內(nèi)存地址;不支持from ... import ...格式的模塊進(jìn)行重新加載。
大部分模塊設(shè)計(jì)為只加載一次,重新加載可能導(dǎo)致一些問(wèn)題,因此,慎用reload()。
使用sys.modules可查看已加載的模塊。
Python2
在Python2中,reload()為內(nèi)置函數(shù)。
例:重設(shè)字符編碼
>>>import sys
>>> sys.getdefaultencoding() # 當(dāng)前默認(rèn)編碼
'ascii'
>>> reload(sys) # 使用 reload
>>> 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 "
", line 1, in
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)
>>> from importlib import reload
>>> reload(sys)
以上這篇基于Python2、Python3中reload()的不同用法介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

