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

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

的情况。


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值