国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

詳解python3中的真值測(cè)試

2020-01-04 14:56:18
字體:
供稿:網(wǎng)友

1. 真值測(cè)試

所謂真值測(cè)試,是指當(dāng)一種類型對(duì)象出現(xiàn)在if或者while條件語句中時(shí),對(duì)象值表現(xiàn)為True或者False。弄清楚各種情況下的真值對(duì)我們編寫程序有重要的意義。

對(duì)于一個(gè)對(duì)象a,其真值定義為:

  • True : 如果函數(shù)truth_test(a)返回True。
  • False:如果函數(shù)truth_test(a)返回False。

以if為例(while是等價(jià)的,不做贅述),定義函數(shù)truth_test(x)為:

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

2.對(duì)象的真值測(cè)試

一般而言,對(duì)于一個(gè)對(duì)象,在滿足以下條件之一時(shí),真值測(cè)試為False;否則真值測(cè)試為True。

  • 其內(nèi)置函數(shù)__bool__()返回False
  • 其內(nèi)置函數(shù)__len__()返回0

(1)以下類型對(duì)象真值測(cè)試為真:

class X:   pass

(2)以下真值測(cè)試為假:

class Y:   def __bool__(self):     return False

(3)以下真值測(cè)試為假:

class Z:   def __len__(self):     return 0

進(jìn)入python3腳本環(huán)境,測(cè)試過程如下:

>>> 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. 常見對(duì)象的真值

下面是常見的真值為False的情況:

  • 常量:None and False.
  • 數(shù)值0值: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • 序列或者集合為空:'', (), [], {}, set(), range(0)

進(jìn)入python3腳本環(huán)境,測(cè)試過程如下:

>>> truth_test(None)False>>> truth_test(False)False>>> truth_test(0)False>>> truth_test(0.0)False>>> truth_test(0j)  #復(fù)數(shù)False>>> truth_test(Decimal(0)) #十進(jìn)制浮點(diǎn)數(shù)False>>> truth_test(Fraction(0,1)) #分?jǐn)?shù)False>>> truth_test(Fraction(0,2)) #分?jǐn)?shù)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

此外的其它取值,真值測(cè)試應(yīng)當(dāng)為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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武威市| 新乡县| 定西市| 新和县| 信丰县| 永善县| 文成县| 阳西县| 东城区| 香港| 郁南县| 烟台市| 嘉荫县| 石林| 师宗县| 高密市| 印江| 襄城县| 海兴县| 八宿县| 苏州市| 岑巩县| 长春市| 紫金县| 岐山县| 大连市| 灵宝市| 双流县| 镇坪县| 云林县| 西丰县| 天长市| 灯塔市| 抚宁县| 多伦县| 达日县| 中牟县| 苏尼特右旗| 赤峰市| 共和县| 河东区|