python動態載入變數示例分享

NO IMAGE

眾所周知,程式在啟動後,各個程式檔案都會被載入到記憶體中,這樣如果程式文字再次變化,對當前程式的執行沒有影響,這對程式是一種保護。

但是,對於像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 了,因為在執行的時候,先執行了一遍這個函式,再通過函式獲取了這個變數,這樣就會獲得新值。

您可能感興趣的文章:

Python實現動態載入模組、類、函式的方法分析Python動態載入模組的3種方法python 動態獲取當前執行的類名和函式名的方法Python中使用動態變數名的方法Python中動態獲取物件的屬性和方法的教程Python實現動態新增類的屬性或成員函式的解決方法在python的類中動態新增屬性與生成物件python動態載入包的方法小結python動態引數用法例項分析Python中動態建立類例項的方法Python動態匯入模組的方法例項分析