最近在做乙個小的程式,想用sympy處理傳入的字串公式和一串變長的引數值,生成一系列的值。
在給公式賦值時,碰到了乙個問題,sympy需要先定義好符號的變數。而符號的變數在寫作函式時是不清楚的,如下圖:
x, y = symbols('x y')
expr = (x + y)*2*y+y**2
x和y均為符號變數,是由變長引數值確定的。有可能別的計算式需要傳入5個符號變數,那我就要列x,y,z,m,n了。如何動態生成變數呢。經過查詢,發現可以使用locals函式。廢話不多說:
tmp_local = locals()
#根據傳入的引數值生成參sympy的引數
for key in paramers.keys():
tmp_local[key] = symbols(key)
這裡tmp_local是乙個區域性變數的字典,這樣一來就可以實現動態的設定變數了。
那如何使用這個動態生成的變數呢?如何給這個動態變數賦值呢?上面也提到了,tmp_local是乙個字典,我們可以直接通過鍵來進行訪問和賦值操作。如下:
tmp_local['y'] = 'z676'
print(tmp_local['y'])
Python生成動態變數和呼叫
做習題的時候需要生成多個空字典,所以找到了利用迴圈建立按序列命名字典的方法。直接執行表示式中的語句 for i in range 3 exec d dict format i exec print d format i 不能使用eval來替代exec,因為eval後要求的是表示式,如上exec後跟的...
靜態變數和動態變數
首先,變數的儲存型別可分為四類 自動型別 auto 暫存器型別 register 靜態型別 static 外部型別 extern 動態變數 自動型別 auto 暫存器型別 register 靜態變數 靜態型別 static 外部型別 extern 屬於動態全域性變數,可以省略auto識別符號,因此,...
python 自動生成動態變數及應用
在這裡我們需要exec函式 exec object globals locals object 必填 表示需要執行的python globals 選填 表示全域性命名空間 字典 locals 選填 表示當前區域性命名空間 字典 example 生成10個變數 q 0 q 1 q 2 q 3 q 4 ...