您的位置:首页 > 编程语言 > Python开发

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

2016-06-13 09:38 609 查看
提问:如何正确的理解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循环行为方式也是这样。如果迭代器有更多的项目,则只考虑条件为真

的情况。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python stack overflow