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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Python操作列表的常用方法分享
Feb 13 Python
跟老齐学Python之变量和参数
Oct 10 Python
Python过滤列表用法实例分析
Apr 29 Python
Python socket实现的简单通信功能示例
Aug 21 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
Python 的AES加密与解密实现
Jul 09 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
python+playwright微软自动化工具的使用
Feb 02 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
Python实现为PDF去除水印的示例代码
Apr 03 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调用Twitter的RSS的实现代码
2010/03/10 PHP
解析php中const与define的应用区别
2013/06/18 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
php简单压缩css样式示例
2016/09/22 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
在Python中操作文件之read()方法的使用教程
2015/05/24 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
平民服装店创业计划书
2014/01/17 职场文书
《将心比心》教学反思
2014/04/08 职场文书
父母对孩子说的话
2014/04/12 职场文书
中学生英语演讲稿
2014/04/26 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
文化大革命观后感
2015/06/17 职场文书
跳高加油稿
2015/07/21 职场文书