我不是在问Python的作用域规则。我大致了解作用域在Python中用于循环的原理。我的问题是为什么设计决策是以这种方式做出的。例如(无双关语):
for foo in xrange(10):
bar = 2
print(foo, bar)
上面将打印(9,2)。
这让我感到很奇怪:“ foo”实际上只是在控制循环,而“ bar”是在循环内部定义的。我可以理解为什么可能需要在循环外部访问“ bar”(否则,for循环的功能将非常有限)。我不明白的是为什么循环退出后,控制变量必须保留在范围内。以我的经验,它只会使全局名称空间混乱,并且使查找其他语言的解释器捕获的错误变得更加困难。
for
循环使全局名称空间混乱,请将其包装在函数中。关闭嘉豪!