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循環變量的範圍規則?