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+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
Python使用functools实现注解同步方法
Feb 06 Python
python实现百度语音识别api
Apr 10 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
python实现支付宝转账接口
May 07 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
python学生管理系统的实现
Apr 05 Python
python能开发游戏吗
Jun 11 Python
python 绘制场景热力图的示例
Sep 23 Python
python Tkinter的简单入门教程
Apr 11 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
python与php实现分割文件代码
2017/03/06 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python self用法详解
2020/11/28 Python
python中time.ctime()实例用法
2021/02/03 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
百丽国际旗下购物网站:优购
2017/02/28 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
设计专业毕业生求职信
2014/06/25 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
财务人员入职担保书
2015/09/22 职场文书
Golang: 内建容器的用法
2021/05/05 Golang