2014-06-21 78 views
1

讓我先說開始我完全同意,你應該 keep data out of your variable names 但是讓我們假設你想這樣的功能:設定的eval或者exec全局變量在Python

def setglobal(s, x): 
    # Some kind of eval or exec trick like eval(s+' = '+x) so we end up 
    # with a global variable whose name is the string s and that has a value of x. 
+0

您還可以維護一個全局字典,您可以在其中添加鍵和值x。 – RohitJ

+0

只是爲了討論的緣故,您對於像這樣的功能有什麼興趣? –

+0

我很尷尬地說! :)好吧,我會試着去理解它:我有一個API的幾十個參數的字典,我會對它們做一些計算,因此總是把它們稱爲' p ['foo']'而不是'foo'。這聽起來很瘋狂嗎,或者我可能會把事情搞錯? – dreeves

回答

3

它是否必須是一個執行/評估技巧?

def setglobal(s, x): 
    globals()[s] = x 
0

這似乎工作:

# Take a symbol name s as a string and a value x and eval(s+' = '+x) to set a 
# global variable with name s to value x. For getglobal(s) use eval(s). 
def setglobal(s, x): 
    exec "global "+s+"; "+s+" = "+repr(x) in globals()