详解python3中的真值测试
1.真值测试
所谓真值测试,是指当一种类型对象出现在if或者while条件语句中时,对象值表现为True或者False。弄清楚各种情况下的真值对我们编写程序有重要的意义。
对于一个对象a,其真值定义为:
- True:如果函数truth_test(a)返回True。
- False:如果函数truth_test(a)返回False。
以if为例(while是等价的,不做赘述),定义函数truth_test(x)为:
deftruth_test(x): ifx: returnTrue else: returnFalse
2.对象的真值测试
一般而言,对于一个对象,在满足以下条件之一时,真值测试为False;否则真值测试为True。
- 其内置函数__bool__()返回False
- 其内置函数__len__()返回0
(1)以下类型对象真值测试为真:
classX: pass
(2)以下真值测试为假:
classY: def__bool__(self): returnFalse
(3)以下真值测试为假:
classZ: def__len__(self): return0
进入python3脚本环境,测试过程如下:
>>>classX: ...pass ... >>>classY: ...def__bool__(self): ...returnFalse ... >>>classZ: ...def__len__(self): ...return0 ... >>>deftruth_test(x): ...ifx: ...returnTrue ...else: ...returnFalse ... >>>x=X() >>>y=Y() >>>z=Z() >>>truth_test(x) True >>>truth_test(y) False >>>truth_test(z) False >>>
3.常见对象的真值
下面是常见的真值为False的情况:
- 常量:NoneandFalse.
- 数值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.一些有意思的例子
下面是一些有意思的例子,原理不超出前面的解释。
>>>if1andFraction(0,1): ...print(True) ...else: ...print(False) ... False >>>if1and(): ...print(True) ...else: ...print(False) ... False >>>if1andrange(0): ...print(True) ...else: ...print(False) ... False >>>if1andNone: ...print(True) ...else: ...print(False) ... False >>>if1+2jandNone: ...print(True) ...else: ...print(False) ... False
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。