明霞山资源网 Design By www.htccd.com
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 >
3. 常见对象的真值
下面是常见的真值为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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python3,真值测试
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。