我问的不是Python的作用域规则;我一般理解如何范围适用于Python循环。我的问题是为什么设计决策是这样做出的。例如(不是双关语):
for foo in xrange(10):
bar = 2
print(foo, bar)
上面将输出(9,2)。
这让我觉得很奇怪:'foo'实际上只是控制循环,'bar'是在循环中定义的。我可以理解为什么在循环之外访问'bar'可能是必要的(否则,for循环的功能将非常有限)。我不明白的是,为什么在循环退出后,控制变量必须保持在作用域内。根据我的经验,它只会使全局名称空间变得混乱,并使跟踪其他语言的解释器可能捕捉到的错误变得更加困难。