金狮镖局 Design By www.egabc.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.egabc.com
金狮镖局
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
金狮镖局 Design By www.egabc.com
暂无详解python3中的真值测试的评论...
更新日志
2024年11月18日
2024年11月18日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】