2013-03-17 35 views
1

我使用的是可變的數據結構,發現做d[mods_mutable()] = mods_mutable()]不具有相同的行爲字典經營秩序

key = mods_mutable() 
d[key] = mods_mutable() 

很容易被猜到發生了什麼。短期旅行到一個臨時文件和一個小的測試證實:

x = 0 
def f(): 
    global x 
    x += 1 
    return x 

d = dict() 
d[f()] = f() 
print d 

運行它,我們得到{2: 1}。很明顯,關鍵的價值是第二次評估哪種類型是有意義的(如果我們得到一個異常或獲得價值,那麼關鍵是什麼?)。

此行爲是否記錄在案?我在官方文檔中找不到任何內容,谷歌Google也沒有爲我的問題做任何事情。我們是否保證這個訂單,無論實施和版本?是否還有更多這樣的細節需要注意?

+0

右手側總是首先評估。 – Volatility 2013-03-17 00:56:50

+0

我不敢相信我沒有想過這個...... – 2013-03-17 00:58:23

回答

3

Python從左向右評估表達式。請注意,在評估分配時,右側將在左側之前評估。

5.14. Evaluation order參見