理解与作用域显示出不寻常的相互作用。这是预期的行为吗?
x = "original value"
squares = [x**2 for x in range(5)]
print(x) # Prints 4 in Python 2!
冒着抱怨的风险,这是一个残酷的错误来源。在编写新代码时,我只是偶尔会发现由于重新绑定而导致的非常奇怪的错误——即使现在我知道这是一个问题。我需要制定一个规则,比如“在列表理解中始终使用下划线作为 temp vars 的前缀”,但即使这样也不是万无一失的。 事实上,有这种随机的定时炸弹等待种否定了所有美好的“易于使用”的列表理解。