我發現它非常有用,能夠在運行時創建新的變量和創造的結果進行處理的字典後,即寫入文件:的Python:使用瓦爾()將一個字符串分配給一個變量
myDict = {}
for i in range (1,10):
temp = "variable"+str(i)
vars()[temp] = myFunctionThatReturnsData() # variable1= data1, variable2 = data2,etc.
myDict[temp] = vars(temp)
它創建了我可以用myDict [result1]調用的字典條目[result1:data1]。我一直在使用vars()而沒有真正理解我在做什麼。我把它vars()
返回與局部變量的字典,並
瓦爾()[X] = Y
創建[X:Y]的新字典項(?)?
我有一個腳本,我在{input1:data1,input2:data2}準備的字典中傳遞,我使用此方法遍歷所有值,存儲所有結果並將其輸出到文件。這段代碼是在一個類中的函數中,並且正在工作。
我的困惑的根源是,我已經閱讀了如何當地人各個崗位()不應該與被搞砸了,怎麼瓦爾()相當於(?)當地人(),或全局()..
所以我的問題是(至少)兩個方面:
1.什麼究竟VARS(),或特別是,乏()[X] = Y這樣做,
2.什麼範圍這個字典是(我需要記住我寫大程序
3.Whether這是良好的編程 實踐。
在此先感謝!
我認爲'vars()['x'] = 4'和'x = 4'實際上只相當於一些時間。如果你在一個函數中這樣做,並且不在其他地方設置'x',並且函數被編譯器優化了,那麼函數後面的'x'的正常查找(即'y = x + 2')沒有工作。我認爲編譯器會緩存它可以看到的變量(可能在編譯時定義),並沒有考慮到這種shenanigan。如果你爲你的函數添加一個exec語句,那麼編譯器不會嘗試優化函數。 – 2010-02-23 21:05:10
感謝周到的答案, 在序列數據: 功能(基準) 看起來非常有用的。今天我學到了很多東西,謝謝! – PPTim 2010-02-23 21:28:38
要查找關於該構造的更多信息,請查找「python迭代器」 – jcdyer 2010-02-23 22:04:09