Python中使用Boolean操作符做真值测试实例


Posted in Python onJanuary 30, 2015

在Python中,任何类型的对象都可以做真值测试,并且保证返回True或者False。

以下几种值(不论类型)在真值测试中返回False:

1.None
2.False
3.任何类型的数字0,包括0,0.0,0L,0j
4.空的序列(sequence)或者映射(mapping)类型对象
5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0

对于最后一条规则,有几点需要说明:

1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True
2.如果类同时定义了__nonzero__() 和 __len__(),只会参考__nonzero__()的返回值

Boolean操作符的特性(直接copy文档而来):

x or y: if x is false, then y, else x

x and y: if x is false, then x, else y

not x: if x is false, then True, else False

1.注意and和or操作符的短路特性
2.not运算符要么返回True要么返回False
3.and和or运算符的返回值不限于True和False,它只是对x或者y做真值测试,然后返回其中一个的值(注意不是其真值)

代码示例:

s = ''

s = s or 'default value'

print s

运行结果是:

default value
Python 相关文章推荐
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Django中使用Celery的教程详解
Aug 24 Python
python使用Matplotlib画条形图
Mar 25 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
python Tkinter版学生管理系统
Feb 20 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
Python 数据可视化之Matplotlib详解
Nov 02 Python
Python中的zip函数使用示例
Jan 29 #Python
Python的另外几种语言实现
Jan 29 #Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 #Python
Python中实现常量(Const)功能
Jan 28 #Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 #Python
Python中的异常处理学习笔记
Jan 28 #Python
Python中集合类型(set)学习小结
Jan 28 #Python
You might like
php新建文件自动编号的思路与实现
2011/06/27 PHP
php判断访问IP的方法
2015/06/19 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
PHP 无限级分类
2017/05/04 PHP
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
实例讲解python函数式编程
2014/06/09 Python
python中的lambda表达式用法详解
2016/06/22 Python
matplotlib绘制动画代码示例
2018/01/02 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python列表与元组的异同详解
2019/07/02 Python
使用python远程操作linux过程解析
2019/12/04 Python
python列表生成器迭代器实例解析
2019/12/19 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
什么是封装
2013/03/26 面试题
高三地理教学反思
2014/01/11 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
bose降噪耳机音能消除人声吗
2022/04/19 数码科技