2019年8月26日 / 316次阅读 / Last Modified 2019年9月3日
语法
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不能再带if。但是却可以在else的内部,编写复杂的逻辑代码,这部分是自由的。
>>> for i in range(3):
... print(i)
... else: # no condition here
... # you can do any thing here
... print('after loop i =',i)
... if i == 3: print('WTF')
... else: print('En...')
...
0
1
2
after loop i = 2
En...
在for循环后的else代码块内部,你可以自由发挥!
continue不影响循环后else分支的执行,而break是跳出循环,同时也跳出了循环后跟着的else分支(要把此else分支与循环想象成一个整体)。
>>> for i in range(3):
... if i == 1: continue
... print(i)
... else:
... print('loop end')
...
0
2
loop end
上面这段代码,用continue跳过了一个i的打印,最后for循环后的else分支能够被执行。我们再测试一下break的效果:
>>> for i in range(3):
... if i == 1: break
... print(i)
... else:
... print('do sth after for loop')
...
0
>>>
break跳出了for循环,同时也跳出了与for循环配对的else分支。else分支是与循环配对的,就像与传统的 if 配对使用,当与循环配对使用的时候,else的条件就是循环的条件为非真的时候。
这种情况就相当于进入循环的条件为False,直接进入else分支。
>>> while False:
... print('dead code')
... else:
... print('running from here')
...
running from here
前面都是用for循环举例,其实while循环也是一样的。
Python官方对for语句后面的else的解释:Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement.
以上就是对Python循环语句后面跟的else分支的介绍。
-- EOF --
本文链接:https://www.pynote.net/archives/960
《循环后的else分支》有1条留言
©Copyright 麦新杰 Since 2019 Python笔记
循环中break语句的使用,才给循环的else分支带了新东西。 [ ]