python中的for...else和while...else

python中的for…else和while…else

首先讲结论:不要在for和while循环后面写else块。

python提供了一种很多语言都不支持的功能,那就是可以在循环语句后面直接写else块。

下面直接看代码。

# -*- coding: utf-8 -*-
for i in range(3):
    print(i)
else:
    print('this is else')
#输出
#0
#1
#2
#this is else   

for i in range(3):
    print(i)
    break
else:
    print('this is else')
#输出
#0

i = 0 
while(i < 3):
    print(i)
    i += 1
else:
    print('this is else')
#输出
#0
#1
#2
#this is else 

i = 0 
while(i < 3):
    print(i)
    i += 1
    break
else:
    print('this is else')
#输出
#0

可以看到这里else块的语义为:如果前面的循环块正常执行,则执行else块,如果前面的循环未执行完,则不执行else块。

这与通常意义的else块语义正好相反,通常的if…else…块语义为如果前面的if块没有执行,则执行else块。

这里还存在两种特殊情况:一如果for遍历的序列为空,那么执行else块;如果while循环初始循环条件为false,那么执行else块。

再看如下代码

# -*- coding: utf-8 -*-
for i in []:
    print(i)
else:
    print('this is else')
#输出
#this is else   


while False:
    print('hello')
else:
    print('this is else')
#输出
#this is else   

结论

  1. python支持for…else…和while…else的特殊语法,其语义为:如果前面的循环块正常执行,则执行else块,如果前面的循环未执行完,则不执行else块。
  2. 这种语法与通常意义的else语义正好相反,极易引起误解,因此建议非必须情况不要使用这种写法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值