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

yipeiwu_com7年前Python基础

在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

相关文章

在Pycharm中设置默认自动换行的方法

如下所示: 只对当前文件有效的操作: 菜单栏->View -> Active Editor -> Use Soft Wraps; 如果想对所有文件都有效,就要在sett...

基于python yield机制的异步操作同步化编程模型

本文总结下如何在编写python代码时对异步操作进行同步化模拟,从而提高代码的可读性和可扩展性。      游戏引擎一般都采用分布式框架,通过一定...

tensorflow使用神经网络实现mnist分类

本文实例为大家分享了tensorflow神经网络实现mnist分类的具体代码,供大家参考,具体内容如下 只有两层的神经网络,直接上代码 #引入包 import tensorflow...

python数据处理之如何选取csv文件中某几行的数据

前言 有些人看到这个问题觉得不是问题,是嘛,不就是df.col[]函数嘛,其实忽略了一个重点,那就是我们要省去把csv文件全部读取这个过程,因为如果在面临亿万级别的大规模数据,得到的结果...

python之消除前缀重命名的方法

● 脚本用途 遍历文件夹下的文件,消除文件名前的特征字符串。 ● 脚本实现 import os,sys import re from string import Template...