眾所周知,程式在啟動後,各個程式檔案都會被載入到記憶體中,程式設計客棧這樣如果程式文字再次變化,對當前程式的執行沒有影響,這對程式是一種保護。
但是,對於像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_he程式設計客棧llo
這樣,執行test1.py的時候,出現的結果仍然是'hello world',而非『hello you',說明變數已經載入到記憶體中,儘管該模組的程式設計客棧檔案在程式設計客棧硬碟上已經被重寫。
接下來,使用函式的情況:www.cppcns.com
複製** **如下:
#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非同步載入和動態 Vue動態載入非同步元件
背景 目前我們專案都是按元件劃分的,然後各個元件之間封裝成產品。目前都是採用iframe直接巢狀頁面。專案中我們還是會碰到一些通用的元件跟業務之間有通訊,這種情況下iframe並不是最好的選擇,iframe存在跨域的問題,當然是postmessage還是可以通訊的,但也並非是最好的。目前有這麼乙個場...
php自動載入autoload機制示例分享
1,自定義函式 2,spl autoload register 複製 如下 liuyuan ebuinfo var www phpgcs php autoload ll rw rw r 1 liuyuan liuyuan 800 feb 19 11 39 func autoload.php rw r...
python動態載入包
動態載入模組有三種方法 1,使用系統函式 import stringmodule import string 2,使用imp 模組 import imp stringmodule imp.load module string imp.find module string 3,使用exec impor...