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中使用摄像头实现简单的延时摄影技术
Mar 27 Python
python3.4实现邮件发送功能
May 28 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
Pycharm更换python解释器的方法
Oct 29 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Python中按值来获取指定的键
Mar 04 Python
Django框架实现的分页demo示例
May 25 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
10个python爬虫入门实例(小结)
Nov 01 Python
Python竟然能剪辑视频
May 25 Python
Python数据处理的三个实用技巧分享
Apr 01 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/10/09 PHP
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PDO::_construct讲解
2019/01/27 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
详解js的六大数据类型
2016/12/27 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
JSONP基础知识详解
2017/03/19 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python实现大转盘抽奖效果
2019/01/22 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
python实现连连看游戏
2020/02/14 Python
手机促销活动方案
2014/02/05 职场文书
法学专业求职信
2014/07/15 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
学校体育节班级口号
2015/12/25 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript
教你如何用cmd快速登录服务器
2022/06/10 Servers