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中使用gzip模块压缩文件的简单教程
Apr 08 Python
Python实现股市信息下载的方法
Jun 15 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Php多进程实现代码
May 07 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
django富文本编辑器的实现示例
Apr 10 Python
python中append实例用法总结
Jul 30 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
Python datetime模块的使用示例
Feb 02 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
2006/11/25 PHP
php单例模式实现方法分析
2015/03/14 PHP
PHP最常用的正则表达式
2017/02/13 PHP
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python2和python3哪个使用率高
2020/06/23 Python
python 实现的车牌识别项目
2021/01/25 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
干部选拔任用方案
2014/05/26 职场文书
干部考核工作总结2015
2015/07/24 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
详解java如何集成swagger组件
2021/06/21 Java/Android
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android