for i in foo:
if i == 0:
break
else:
print("i was never 0")
else代码块只有在for循环正常结束后执行如果遇到break语句那么不会执行else语句块,等价于下面:
found = False
for i in foo:
if i == 0:
found = True
break
if not found:
print("i was never 0")
不过这种语法看起来怪怪地,让人感觉是else块是在for语句块没有执行的时候执行的,很容易让人去类比 if else 的语法,如果是把else换成finally或许更容易理解