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实现豆瓣图片下载的方法
May 25 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
实时获取Python的print输出流方法
Jan 07 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
Python处理session的方法整理
Aug 29 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
python3判断IP地址的方法
Mar 04 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入门小知识
2008/03/24 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php实现httpRequest的方法
2015/03/13 PHP
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
春风行动实施方案
2014/03/28 职场文书
质量提升方案
2014/06/16 职场文书
三严三实对照检查材料
2014/08/25 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
英语导游词
2015/02/13 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
民事申诉状范本
2015/05/20 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript