摘要:本文主要介绍了Python入门之while、for、try except语句中的else,通过具体的内容向大家展现,希望对大家Python开发的学习有所帮助。
本文主要介绍了Python入门之while、for、try except语句中的else,通过具体的内容向大家展现,希望对大家Python开发的学习有所帮助。
Python中的else是基础的语句,它的两种使用形式是:
if condition:
doSomeThings
else:
doAnthorThings
以及
if condition1:
do1
elif condition2:
do2
else:
doOtherThings
这两个用法理解起来没有问题。下面要看的是for,while循环和try异常处理语句中的else的用法。
一、for,while循环中的else
for,while循环中,else用于循环正常结束,且循环体中没有break、return和异常抛出,则执行else语句块中的内容。 例如,我们判断列表ls中是否全是奇数。普通情况下,需要引入一个标志变量allOdd,指示所有变量都是奇数,有偶数出现则将此变量设为False。写法如下:
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)
利用else指示循环正常结束的功能,采用for循环或者while循环加else的写法如下:
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)
可见,for循环使用else语句之后,节省了指示性变量allOdd,以及相应的处理语句。整个程序语义上更简洁、逻辑上更顺畅。
二、try异常处理语句中的else
try except异常捕获处理语句中,else定义用于没有异常出现时执行的部分。 例如,当我们处理有可能导致异常的计算时,else语句定义的部分,可以确保没有异常发生,得到了正确计算结果。例子是计算简单的除法。普通写法:
try:
result = a/b
print(result)
except TypeError:
print('输入数字')
except ZeroDivisionError:
print('被除数不能为零')
采用else语句时的写法:
try:
result = a/b
except TypeError:
print('输入数字')
except ZeroDivisionError:
print('被除数不能为零')
else:
print('计算结果%r'%result)
也就是说,try except else finally分别对应如下关系:
try 可能抛出异常的语句。
except 捕获异常,处理异常。
else 无异常,明确得知try语句中无异常。而不是这两种情况:有异常;有异常但处理了。
finally 有或无异常,都执行的语句,一般为关闭、清理工作。
else语句在try except句法中最主要的功能,是明确指出了没有异常出现时才执行的语句块。与出现异常,或者出现异常并且处理了这两种情况是分开的。这个语法块是在没有异常出现时执行的,保证了环境的正确性。
三、简单总结
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语法会变成一个很有用的技巧。
我是小职,记得找我
✅ 解锁高薪工作
✅ 免费获取最新技术干货教程资源
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号