国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python之reload流程實例代碼解析

2020-02-22 23:02:08
字體:
來源:轉載
供稿:網友

本文研究的主要是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             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗水县| 淄博市| 漠河县| 运城市| 普兰县| 博客| 宜君县| 丹阳市| 三门峡市| 桃园市| 梨树县| 中山市| 丘北县| 江门市| 双牌县| 湘乡市| 上蔡县| 海宁市| 桐庐县| 衡水市| 黄梅县| 营口市| 通江县| 兰坪| 德安县| 西充县| 渭源县| 大兴区| 崇文区| 手游| 达日县| 阿拉尔市| 榆社县| 鄯善县| 汝城县| 长春市| 揭阳市| 屏山县| 双流县| 宜君县| 长白|