本题讨论Python的for…else和while…else语法,这是Python中最不常用、最为误解的语法特性之一。
Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代【正常】完成之后执行。换句话说,如果我们没有以break、return、异常等不正常方式退出循环,那么else分支将被执行。如下例,循环正常完成后,else会被执行:
>>> for i in range(3):
... print(i)
... else:
... print('Iterated over everything :)')
...
0
1
2
Iterated over everything :)
上面的代码中,我们在range(3)上迭代并打印每个数字。因为我们让循环正常完成,所以else分支也被执行,并打印出Iterated over everything :) 。相反,如果我们用break语句终止循环,那么else分支将不会执行:
>>> for i in range(3):
... if i == 2:
... break
... print(i)
... else:
... print('Iterated over everything :)')
...
0
1
注意,尽管循环所迭代的序列是空的,else分支依然会被执行,毕竟循环仍然是正常完成的。同样不要忘记,以上所有也适应于while…else。
总结
for … else结构下
1.for里面的语句和普通的(没有else的for语句)没有区别;
2. else中的语句会在循环正常执行完后执行;
3.当for中语句通过break跳出而中断时,不会执行else。
最后总结一句,for ... else结构一般要和break一起使用,才能体现这个结构的强大之处(至少我是这么觉得的,不知还有什么其他情况,希望网友不吝赐教)。
while ... else结构也符合上述条件。
Python循环中的continue和break
continue和break语句其实就和C语言的用法是一样的,只是在for ... else结构结构中
1.当for中语句通过break跳出而中断时,不会再执行else中的内容;
2. 而将continue语句和寻常语句无异,只要不是不通过break,光有continue会进入else语句。
参考博文:
http://python.jobbole.com/81063/
http://blog.csdn.net/humanking7/article/details/43792425