python的else子句使用指南


Posted in Python onFebruary 27, 2016

在日常coding中,分支语句的使用非常普遍,经常会根据是否满足一定的条件对代码执行的逻辑进行一些控制,所以大家对if[elif[else]]一定不会陌生。分支语句中的else子句在其它的条件不满足的时候会被执行到,适当的使用分支语句能够让我们的代码逻辑更加的丰富。

在分支语句中使用else子句在一些常见的编程语言中的用法基本相同,类似于提供了一条默认的执行路径,配合if等条件判断语句使用,相比其它的编程语言(c#, java, js等)在python中,else有一些特殊的用法,配合for, while等循环语句使用,甚至还能配合异常处理try except语句进行使用,能够让我们的代码更加的简洁。

配合for/while循环语句使用

在for循环语句的后面紧接着else子句,在循环正常结束的时候(非return或者break等提前退出的情况下),else子句的逻辑就会被执行到。先来看一个例子:

def print_prime(n):
  for i in xrange(2, n):
    # found = True
    for j in xrange(2, i):
      if i % j == 0:
         # found = False 
        break
    else:
      print "{} it's a prime number".format(i)
    # if found:
         # print "{} it's a prime number".format(i)
 
print_prime(7)
 
2 it's a prime number
3 it's a prime number
5 it's a prime number

一个简单打印素数的例子,判断某个数字是否是素数的时候需要遍历比它自己小的整数,任何一个满足整除的情况则判断结束,否则打印这是一个素数的info,有了else的加持,整个例子的逻辑相当的“self-expressive”,如同伪代码一般的好理解而且相比在判断整除的时候设置标志值然后在函数的结尾处判断标志值决定是否打印数字时素数的消息,代码更简洁没有那么多要描述如何做的“过程式”准备工作。

ps: 大家可以把例子中的被注释代码运行对比下效果。

配合 try except错误控制使用

在异常处理语句中,else有相似的用法,当try代码块没有抛出任何的异常时,else语句块会被执行到。

def my_to_int(str_param):
  try:
    print int(str_param)
  except ValueError:
    print 'cannot convert {} to a integer'.format(str_param)
  else:
    print 'convert {} to integer successfully'.format(str_param)
 
my_to_int("123")
my_to_int("me123")
 
123
convert 123 to integer successfully
cannot convert me123 to a integer

如打印日志所示,在转换成功未发生错的的时候,else语句里的逻辑会被执行,当然这个例子可能并没有什么太多的实际的用处,但大致能说明else在错误处理中的用处:简化逻辑,避免使用一些标志值就能够准确把握是否发生错误的情况来做一些实际的操作(比如在保存数据的时候如果发生错误,在else语句块中进行rollback的操作,然后紧接着还能加上finally语句完成一些清理操作。

善用else语句块能够让我们编写出更加简明,更加接近自然语言的语义的代码,当然也会更加的pythonic,细微之处大家可以慢慢体会。

Python 相关文章推荐
python简单实现基于SSL的IRC bot实例
Jun 15 Python
常见的python正则用法实例讲解
Jun 21 Python
Python打印“菱形”星号代码方法
Feb 05 Python
使用Python从零开始撸一个区块链
Mar 14 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
python 对字典按照value进行排序的方法
May 09 Python
python+tkinter实现学生管理系统
Aug 20 Python
python操作gitlab API过程解析
Dec 27 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
Python实现简单多线程任务队列
Feb 27 #Python
如何在Python中编写并发程序
Feb 27 #Python
Python 多线程抓取图片效率对比
Feb 27 #Python
Python 的描述符 descriptor详解
Feb 27 #Python
简析Python的闭包和装饰器
Feb 26 #Python
Android应用开发中Action bar编写的入门教程
Feb 26 #Python
12步教你理解Python装饰器
Feb 25 #Python
You might like
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php中chdir()函数用法实例
2014/11/13 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jquery获取radio值实例
2014/10/16 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
python实现kMeans算法
2017/12/21 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
股东协议书范本
2014/04/14 职场文书
医德考评自我评价
2014/09/14 职场文书
个人授权委托书范文
2014/09/21 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏