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单向链表的实现
Dec 24 Python
Python中time模块和datetime模块的用法示例
Feb 28 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
python可视化实现代码
Jan 15 Python
Python字典对象实现原理详解
Jul 01 Python
python实现爬取百度图片的方法示例
Jul 06 Python
python中update的基本使用方法详解
Jul 17 Python
python解释器spython使用及原理解析
Aug 24 Python
手写一个python迭代器过程详解
Aug 27 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python如何实现定时器功能
May 28 Python
python Gabor滤波器讲解
Oct 26 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python单链表实现代码实例
2013/11/21 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
详解Python用户登录接口的方法
2019/04/17 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
国外软件测试工程师面试题
2016/12/09 面试题
平安建设工作方案
2014/06/02 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
爱国主义影片观后感
2015/06/18 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server