Python语言语法的一大特点,就是比较符合人类自然语言的写法。比如本文想介绍的循环(for和while)后的else分支,这个feature在很多其它编程语言中都没有,从编程逻辑上分析,其实也不是必须。我觉得Python支持在循环后跟else分支,就是为了更好的代码可读性。
看个例子
>>> for i in range(3):
... print(i)
... else:
... print('for loop end')
...
0
1
2
for loop end
代码先进入循环,循环结束后,执行else分支。从逻辑上看,else分支有点“多余”,因为循环结束后,代码自然就离开循环,执行后面的语句,没有else分支,也是一样按顺序执行后面的语句。这里的else分支,就是明确说明,在循环结束之后执行,设计这个特性,应该是有考虑代码的可读性的。
循环后的else分支,不能带条件
循环后的else分支,其实自带一个条件,即循环结束,else不能再带if。但是却可以在else的内部,编写复杂的逻辑代码,这部分是自由的。
>>> for i in range(3):
... print(i)
... else: # no condition here
... # you can do any thing here
... print('after loop i =',i)