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

首頁 > 編程 > Python > 正文

python動態加載變量示例分享

2020-02-23 05:09:33
字體:
來源:轉載
供稿:網友

眾所周知,程序在啟動后,各個程序文件都會被加載到內存中,這樣如果程序文本再次變化,對當前程序的運行沒有影響,這對程序是一種保護。

但是,對于像python這樣解釋執行的語言,我們有時候會用到“from 模塊 import 變量名”這樣的形式,如果這個變量直接被定義在文件當中,那么這些變量在程序開始時就會被定義、賦值,運行過程中值不變。如果打算在運行過程中對這個模塊進行重寫,那么更改后的變量值是無法被使用的。

對于這個問題,可以換一種思路,將這個模塊中的變量定義在函數里,而函數是在程序運行的時候動態執行的,這樣就能夠獲取到變量的最新值。下面是例子:

首先,不使用函數的情況: 

代碼如下:
#model1.py
p_hello = 'hello world!'

#test1.py
from model1 import p_hello
file = open('model1.py', 'w')
file.write("p_hello = '%s!'"%('hello you'))
file.close()
print p_hello

這樣,執行test1.py的時候,出現的結果仍然是'hello world',而非‘hello you',說明變量已經加載到內存中,盡管該模塊的文件在硬盤上已經被重寫。

接下來,使用函數的情況:

代碼如下:
#model1.py
def rule():
    p_hello = 'hello world!'
    return locals()

#test1.py
from model1 import rule
file = open('model1.py', 'w')
file.write('def rule():/n')
file.write("    p_hello = '%s!'/n"%('hello you'))
file.write("    return locals()/n")
file.close()
p_hello = rule()['p_hello']
print p_hello

這樣,print出來的結果就是hello you 了,因為在運行的時候,先執行了一遍這個函數,再通過函數獲取了這個變量,這樣就會獲得新值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邢台市| 芜湖县| 嵊泗县| 班玛县| 宁城县| 东方市| 二手房| 乌兰县| 灌南县| 化州市| 辉南县| 离岛区| 将乐县| 垫江县| 陈巴尔虎旗| 皋兰县| 逊克县| 天镇县| 武强县| 格尔木市| 抚松县| 楚雄市| 柘城县| 肥东县| 乌什县| 鱼台县| 五大连池市| 玛多县| 徐闻县| 贵南县| 乃东县| 朝阳区| 沭阳县| 常宁市| 右玉县| 南投县| 尚志市| 叙永县| 崇文区| 石首市| 济阳县|