tokens_raw = {"foo": "bar"}
tokens_raw_old = { }
while not tokens_raw == tokens_raw_old:
tokens_raw_old = tokens_raw
# while loop that modifies tokens_raw goes here;
# tokens_raw_old is never referenced
print tokens_raw_old == tokens_raw
這第一次因爲某些原因後,輸出真。 tokens_raw_old
與tokens_raw
具有相同的數據,即使單獨修改了tokens_raw
也是如此。我在某個地方犯了一個愚蠢的錯誤,還是問題出在第二個while循環內(這又是一次引用tokens_raw_old
)?如果沒有明顯的錯誤,我會發布更多的代碼。爲什麼這個變量被改變了?
我實際上在我粘貼的代碼中犯了一個錯誤; tokens_raw是一個列表,而不是一個字典,所以.copy()不是一個有效的方法。然而,這個迴應仍然是有道理的,我發現使用'tokens_raw_old = tokens_raw [:]'具有和你所建議的相同的效果。謝謝您的幫助。 :) – Fraxtil 2010-08-14 03:20:23
@Fraxtil,肯定的,但我個人厭惡日益流行的'somelist [:]'成語 - '名單(somelist)'就是** **這樣的方式來更可讀淺複製清單(或者就此而言,製作任何輸入序列的列表版本)。啊,風格問題,我想! - ) – 2010-08-14 03:22:30