国产探花免费观看_亚洲丰满少妇自慰呻吟_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             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普格县| 那曲县| 绥化市| 博野县| 常德市| 万源市| 许昌县| 宁武县| 井研县| 灵石县| 镇原县| 温泉县| 原平市| 洛隆县| 汽车| 丘北县| 潼关县| 宁夏| 皋兰县| 如皋市| 章丘市| 林西县| 波密县| 旌德县| 若尔盖县| 綦江县| 武汉市| 武威市| 镇赉县| 湘潭市| 长沙县| 增城市| 东平县| 淮滨县| 滕州市| 白水县| 隆昌县| 革吉县| 扎囊县| 曲靖市| 甘泉县|