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 相关文章推荐
pyqt和pyside开发图形化界面
Jan 22 Python
python进阶教程之模块(module)介绍
Aug 30 Python
使用Python对MySQL数据操作
Apr 06 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
python opencv之SURF算法示例
Feb 24 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
Python函数返回不定数量的值方法
Jan 22 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
python验证身份证信息实例代码
May 06 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
Js 中debug方式
2010/02/07 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
requireJS使用指南
2016/04/27 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
分析JavaScript数组操作难点
2017/12/18 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
bootstrap table插件动态加载表头
2019/07/19 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python 装饰器使用详解
2017/07/29 Python
python多进程控制学习小结
2018/10/31 Python
Python中的集合介绍
2019/01/28 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python正则表达式学习小例子
2020/03/03 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
店长岗位职责
2013/11/21 职场文书
自主招生自荐信指南
2014/02/04 职场文书
小学生操行评语
2014/04/22 职场文书
先进党支部事迹材料
2014/12/24 职场文书
检讨书格式
2015/01/23 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书