亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python之reload流程實例代碼解析

發布時間:2020-10-16 19:53:18 來源:腳本之家 閱讀:140 作者:spirit_djy 欄目:開發技術

本文研究的主要是Python之reload流程的相關內容,具體如下。

在Python中,reload() 用于重新載入之前載入的模塊。

reload() 函數語法:

reload(module)

Python中 import 只執行一次,后續的 import 僅僅在 sys.modules 中查找是否存在對應的模塊對象,而對于源文件進行修改后想要立即重新導入該文件而不想整體重新執行程序時, reload 就在該處派上用途了。在實際中,測試代碼修改結果,或者對于不能停止的服務需要動態改變運行行為 reload 是非常有用的。

reload 的執行流程如下所示:

1)在 sys.modules 中查找到對應模塊名的模塊對象;

2)針對該模塊名的 執行文件 屬性,找到對應文件并重新編譯該文件執行;

3)將代碼執行中產生的對象依次更新到原模塊對象的屬性中;

從上面執行流程中我們可以看到如下幾點:

1)模塊對象是可變的,在 reload 執行過程中只是修改了該模塊對象,因此在 reload 后原來的引用還是指向該模塊對象;

2)reload 過程中,文件中代碼重新執行,創建新的對象并綁定到模塊的屬性中;

3)reload 模塊中的 import 和 reload 流程與該模塊是否 reload 無關,一個模塊 reload 并不會導致其中的 import 遞歸重新載入;

4)對于 from * import * 來說其相當于是在本地創建了同名的變量指向模塊中的同名屬性所引用對象, reload 會創建新對象(部分不可變對象除外),其仍然指向舊變量,一般情況下需要重新賦值;

基于此,測試如下代碼:

#----- 被導入代碼 reloadImported.py ------ 
print(' excute code in imported file') 
x = [] 
y = 1 
 
#----- 測試代碼 test.py -------- 
sep = ': ' 
print('---- import module ----') 
import reloadImported 
from reloadImported import x 
print(' id(reloadImported)', id(reloadImported), sep=sep) 
print(' id(reloadImported.x)', id(reloadImported.x), sep=sep) 
print(' id(reloadImported.y)', id(reloadImported.y), sep=sep) 
print(' id(x)', id(x), sep=sep) 
 
print('---- reload module ----') 
from importlib import reload 
reload(reloadImported) 
print(' id(reloadImported)', id(reloadImported), sep=sep) 
print(' id(reloadImported.x)', id(reloadImported.x), sep=sep) 
print(' id(reloadImported.y)', id(reloadImported.y), sep=sep) 
print(' id(x)', id(x), sep=sep) 
from reloadImported import x 
print(' new x id(x)', id(x), sep=sep) 

執行結果如下所示:

---- import module ---- 
 excute code in imported file 
 id(reloadImported): 30322880 
 id(reloadImported.x): 29841208 
 id(reloadImported.y): 1502597584 
 id(x): 29841208 
---- reload module ---- 
 excute code in imported file 
 id(reloadImported): 30322880 
 id(reloadImported.x): 29842088 
 id(reloadImported.y): 1502597584 
 id(x): 29841208 
 new x id(x): 29842088 

總結

以上就是本文關于Python之reload流程實例代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资兴市| 游戏| 神农架林区| 洮南市| 鄂托克旗| 朝阳市| 岳普湖县| 花莲市| 盐边县| 绥阳县| 郴州市| 酉阳| 建德市| 合阳县| 铜鼓县| 临洮县| 台前县| 卓尼县| 晋中市| 松溪县| 永城市| 浦县| 岑溪市| 屯昌县| 鸡泽县| 宽甸| 三都| 筠连县| 仙桃市| 安乡县| 定日县| 高安市| 锦州市| 临泽县| 同德县| 缙云县| 阜康市| 绥中县| 尉犁县| 灌云县| 高碑店市|