一周stackoverflow热门问题选登:如何正确的理解python for循环中的else用法?

来源:互联网 发布:sql case null 编辑:程序博客网 时间:2024/06/11 22:48

提问:如何正确的理解python for循环中的else用法?


许多Python程序员可能不知道while和for循环的语法中包括一个可选的else语句,如:


for val in iterable:    do_something(val)else:    clean_up()


程序中的else语句是便于处理某种行为,在循环的正常终止时执行:即以return或者break方式退出循环将会忽略else语句;存在continue语句将会执行else。我看了一遍又一遍也只知晓这个,但我一直记不起else在何时会被执行。


是永远被执行?顾名思义在循环失效时?在正常结束时?碰到return语句退出循环时?


在关键词选择上的不确定性让我很懊恼,我发现else使用上不确定性很大。我的问题不是“这个关键词会被用的目的”,而是怎么把else的语法弄清楚并且记住它。


我确定这能引起相当数量的讨论,而且我能想象这个关键词选择与try else的语法使用上具有一致性。也许基于这个原因选择else能够辨别它的功能,并且更容易记忆。


投票最多的回答:


if语法中执行else语句是因为条件为假。同理,while循环执行else语句是因为其条件为假。


这些规则符合你所描述的行为:


正常执行:while重复执行直到条件变为假,所以循环执行完成后执行else。


当你执行break语句时,你会退出循环但循环条件并没有变为假,所以你不会执行else语句。


当你执行continue时,你再次评估这个条件,并且通常会暂停本次循环执行下一个循环。所以循环条件为真时会一直执行循环,但是如果变为假则会执行else。


其他方式退出循环,例如return,循环条件没有改变所以不会执行else语句。


for循环行为方式也是这样。如果迭代器有更多的项目,则只考虑条件为真

的情况。


有兴趣的话,可以关注我的微信公众号:学点编程吧


0 0