while、for、try except语句中的else
Python中文社区
共 2232字,需浏览 5分钟
·
2021-02-24 19:43
if condition:
doSomeThings
else:
doAnthorThings
if condition1:
do1
elif condition2:
do2
else:
doOtherThings
一、for,while循环中的else
ls = [1, 3, 5, 7, 9]
allOdd = True
for i in ls:
if i % 2 == 0:
allOdd = False
break
if allOdd:
print('list ls %r constructed by only odd number' % ls)
else:
print('list ls %r ** is\'t ** constructed by only odd number' % ls)
for i in ls:
if i %2 == 0:
print('list ls %r ** is\'t ** constructed by only odd number' % ls)
break
else:
print('list ls %r constructed by only odd number' % ls)
二、try异常处理语句中的else
try:
result = a/b
print(result)
except TypeError:
print('输入数字')
except ZeroDivisionError:
print('被除数不能为零')
try:
result = a/b
except TypeError:
print('输入数字')
except ZeroDivisionError:
print('被除数不能为零')
else:
print('计算结果%r'%result)
try 可能抛出异常的语句。 except 捕获异常,处理异常。 else 无异常,明确得知try语句中无异常。而不是这两种情况:有异常;有异常但处理了。 finally 有或无异常,都执行的语句,一般为关闭、清理工作。
三、简单总结
for while循环中,else用于循环正常结束,且循环体中没有break、return或异常抛出,则执行else语句块中的内容。
try except异常捕获处理语句中,else是定义用于没有异常出现时执行的部分。
不同于if else 语句,以上两种else用法看起来有些复杂。简单理解,可以把else语句块当做语句主体中“没有幺蛾子“时执行的语句块。这样就可以简单理解了else的两种用法了。
许多人反对在此处复用else关键字来表达除外情况,认为then关键字或许更好(luciano ramalho《fluent python》),更甚者主张遵循“最小惊讶原则”,即在for和while语境里不要用else关键字,以免它给人带来疑惑(Brett Slatkin《Effective Python》)。笔者认为,如果把两处else统一理解为“没有出现问题,没有幺蛾子”,那么此时的else语法会变成一个很有用的技巧。
作者:巩庆奎,大奎,对计算机、电子信息工程感兴趣。gongqingkui at 126.com
赞 赏 作 者
更多阅读
特别推荐
点击下方阅读原文加入社区会员
评论