python3中的真值测试

  1. 真值测试
    所谓真值测试,是指当一种类型对象出现在if或者while条件语句中时,对象值表现为True或者False。弄清楚各种情况下的真值对我们编写程序有重要的意义。

对于一个对象a,其真值定义为:

True : 如果函数truth_test(a)返回True。
False:如果函数truth_test(a)返回False。
以if为例(while是等价的,不做赘述),定义函数truth_test(x)为:

def truth_test(x):
if x:
return True
else:
return False
2.对象的真值测试
一般而言,对于一个对象,在满足以下条件之一时,真值测试为False;否则真值测试为True。

其内置函数bool()返回False
其内置函数len()返回0
(1)以下类型对象真值测试为真:

class X:
pass
(2)以下真值测试为假:

class Y:
def bool(self):
return False
(3)以下真值测试为假:

class Z:
def len(self):
return 0
进入python3脚本环境,测试过程如下:

class X:
… pass

class Y:
… def bool(self):
… return False

class Z:
… def len(self):
… return 0

def truth_test(x):
… if x:
… return True
… else:
… return False

x = X()
y = Y()
z = Z()
truth_test(x)
True
truth_test(y)
False
truth_test(z)
False

  1. 常见对象的真值
    下面是常见的真值为False的情况:

常量:None and False.
数值0值: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
序列或者集合为空:”, (), [], {}, set(), range(0)
进入python3脚本环境,测试过程如下:

truth_test(None)
False
truth_test(False)
False
truth_test(0)
False
truth_test(0.0)
False
truth_test(0j) #复数
False
truth_test(Decimal(0)) #十进制浮点数
False
truth_test(Fraction(0,1)) #分数
False
truth_test(Fraction(0,2)) #分数
False
truth_test(”)
False
truth_test(())
False
truth_test({})
False
truth_test(set())
False
truth_test(range(0)) #序列
False
truth_test(range(2,2)) #序列
False
此外的其它取值,真值测试应当为True。

4.一些有意思的例子
下面是一些有意思的例子,原理不超出前面的解释。

if 1 and Fraction(0,1):
… print(True)
… else:
… print(False)

False
if 1 and ():
… print(True)
… else:
… print(False)

False
if 1 and range(0):
… print(True)
… else:
… print(False)

False
if 1 and None:
… print(True)
… else:
… print(False)

False
if 1+2j and None:
… print(True)
… else:
… print(False)

False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值