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中split方法用法分析
Apr 17 Python
python实现提取百度搜索结果的方法
May 19 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
如何使用repr调试python程序
Feb 28 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
python 统计代码耗时的几种方法分享
Apr 02 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 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
正则表达式语法
2006/10/09 Javascript
第十节--抽象方法和抽象类
2006/11/16 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
深入PHP FTP类的详解
2013/06/13 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP 实现链式操作
2021/03/09 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
Python实现提取文章摘要的方法
2015/04/21 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python正则表达式指南 推荐
2018/10/09 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
高一政治教学反思
2014/01/28 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年工程工作总结
2014/11/25 职场文书
2014年政工师工作总结
2014/12/18 职场文书
网络妈妈观后感
2015/06/08 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang
Java中的随机数Random
2022/03/17 Java/Android