Most arguments为什么被做了设计决策,使for循环变量不本地环路以外表明,有流行的用例。安全使用循环变量循环
明显的使用情况是这样的:
x = default_value
for x in iterator:
# do stuff
# do something with x here
遗憾的是,往往第一行遗忘:
# should have set default value for x here
# but forgot
for x in iterator:
# do stuff
# do something with x here
所以当迭代器是空的,他们提出NameError
如果x
前面没有定义。
这个错误得到与嵌套循环恶化:
for y in outer_iterator:
# should have set default value for x here
# but forgot
for x in inner_iterator(y):
# do stuff
# do something with x
这里忘记了x = default_value
导致无声的错误,而不是一个异常,如果inner_iterator(y)
是通过外循环的第二或后面的迭代空。
测试这些情况很困难,因为inner_iterator(y)
不是一个外部参数,所以除非测试足够幸运地以某种方式重新创建情况,否则该错误将不会被检测到。
所有的用例都是脆弱的还是有安全的方法来依赖for循环变量的范围规则?