溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于Python2、Python3中reload()的不同用法介紹

發(fā)布時(shí)間:2020-10-21 00:24:59 來(lái)源:腳本之家 閱讀:180 作者:mighty13 欄目:開發(fā)技術(shù)

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)致一些問題,因此,慎用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è)參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI