bool()函數(shù)是Python的一個(gè)內(nèi)建函數(shù),其作用是對(duì)傳遞的對(duì)象或值參數(shù)進(jìn)行標(biāo)準(zhǔn)的真值檢測(cè)并返回一個(gè)布爾值(True / False)。
bool( [x] )
該函數(shù)的參數(shù) x 是一個(gè)可選參數(shù),其可以是一個(gè)對(duì)象、某個(gè)具體的值或其它表達(dá)式。
該函數(shù)返回值有兩個(gè):True 或者 False。當(dāng)檢測(cè)為真時(shí)返回True,否則返回False.
在Python中,任何對(duì)象都可以進(jìn)行真值檢測(cè),這主要用于 if 或 while 條件中。
如果一個(gè)對(duì)象中定義了__bool__()函數(shù),其結(jié)果依賴于該函數(shù)的返回值情況;或者對(duì)象中定義了__len__()函數(shù),其返回值為0時(shí),其返回False,否則返回True。如果對(duì)象中未定義這兩個(gè)函數(shù),都視為 True.
任何數(shù)值類型的0都會(huì)返回False:0, 0.0, 0j, Decimal(0), Fraction(0, 1);
任何空的序列值或空的集合都返回False:'', (), [], {}, set(), range(0)——分別為空字符串,空的元組,空的列表,空的字典,空的集合和空范圍。
值為 False 或 None 的量都會(huì)返回False。
下面的例子說(shuō)明bool()函數(shù)用于數(shù)字類型的輸出情況。
from fractions import Fraction
from decimal import Decimal
#變量
v1 = 55
v2 = 0
print("bool(v1):",bool(v1))
print("bool(v2):",bool(v2))
#浮點(diǎn)類型float
print("bool(0.00001):", bool(0.00001))
print("bool(0.0):", bool(0.0))
#復(fù)數(shù)complex
print("bool(12+34j):",bool(12+34j))
print("bool(0j):", bool(0j))
#十六進(jìn)制
print("bool(0xF):", bool(0xF))
print("bool(0x0):", bool(0x0))
#表達(dá)式
print("bool(43 - 3):",bool(43 - 3))
print("bool(43 - 43):", bool(43 - 43))
#精確小數(shù)與分?jǐn)?shù)
print("bool(Decimal(0.0)):", bool(Decimal(0.0)))
print("bool(Decimal(0.001)):", bool(Decimal(0.001)))
print("bool(Fraction(1, 123)):",bool(Fraction(1, 123)))
print("bool(Fraction(0, 123)):", bool(Fraction(0, 123)))
輸出結(jié)果:
bool(v1): True
bool(v2): False
bool(0.00001): True
bool(0.0): False
bool(12+34j): True
bool(0j): False
bool(0xF): True
bool(0x0): False
bool(43 - 3): True
bool(43 - 43): False
bool(Decimal(0.0)): False
bool(Decimal(0.001)): True
bool(Fraction(1, 4)): True
bool(Fraction(0, 4)): False
str1 = "Python"
print(bool(str1))
str2 = ""
print(bool(str2))
str3 = "False"
print(bool(str3))
str4 = "0"
print(bool(str4))
輸出結(jié)果:
True
False
True
True
f1 = True
print(bool(f1))
f2 = False
print(bool(f2))
f3 = None
print(bool(f3))
輸出結(jié)果:
True
False
False
list1 = ["R","Python","SPSS"]
list2 = []
print(bool(list1))
print(bool(list2))
t1 = ("R","Python","SPSS")
t2 = ()
print(bool(t1))
print(bool(t2))
d1 = {"L1":"R","L2":"Python"}
d2 = {}
print(bool(d1))
print(bool(d2))
s1 = set(["R","Python","Java"])
s2 = set()
print(bool(s1))
print(bool(s2))
輸出結(jié)果:
True
False
True
False
True
False
True
False
當(dāng)對(duì)象中定義了__bool__()函數(shù)時(shí),其返回值由__bool__()函數(shù)決定,當(dāng)未定義__bool__()函數(shù)而定義了__len__()函數(shù)時(shí),其值由__len__()函數(shù)決定。
class Student():
age = 0
def __init__(self,age):
self.age = age
def __bool__(self):
return bool(self.age)
class People():
name = ''
def __len__(self):
return len(self.name)
s1 = Student(0)
print(bool(s1))
s2 = Student(20)
s2.age = 20
print(bool(s2))
s3 = People()
print(bool(s3))
s4 = People()
s4.name="優(yōu)雅"
print(bool(s4))
輸出結(jié)果如下:
False
True
False
True
以上講解了Python 內(nèi)置函數(shù)bool()函數(shù)的使用方法,如有問(wèn)題歡迎留言。
新聞熱點(diǎn)
疑難解答
圖片精選