Python入门之while、for、try except语句中的else
小职 2021-03-02 来源 :Python中文社区 (ID:python-china) 阅读 562 评论 0

摘要:本文主要介绍了Python入门之while、for、try except语句中的else,通过具体的内容向大家展现,希望对大家Python开发的学习有所帮助。

本文主要介绍了Python入门之while、for、try except语句中的else,通过具体的内容向大家展现,希望对大家Python开发的学习有所帮助。

Python入门之while、for、try except语句中的else


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语法会变成一个很有用的技巧。 


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取最新技术干货教程资源

Python入门之while、for、try except语句中的else

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程