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