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实现倒计时的示例
Feb 14 Python
Python中实现的RC4算法
Feb 14 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
Python3实现定时任务的四种方式
Jun 03 Python
python 实现让字典的value 成为列表
Dec 16 Python
Python操作redis和mongoDB的方法
Dec 19 Python
Python中join()函数多种操作代码实例
Jan 13 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python和php哪个更适合写爬虫
Jun 22 Python
Python实现自动签到脚本功能
Aug 20 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
js获取form的方法
2015/05/06 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
如何运行带参数的python脚本
2019/11/15 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
应用数学自荐书范文
2013/11/24 职场文书
园林系毕业生求职信
2014/06/23 职场文书
给校长的一封检讨书
2014/09/20 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL