Python bool()
时间:2020-02-23 14:42:28 来源:igfitidea点击:
Python bool()函数返回对象的布尔值。
bool类只有两个实例– True和False。
该程序无法扩展。
Python bool()
Python bool()函数使用标准的真值测试规则将指定的参数对象转换为布尔值。
用于返回布尔值的一些规则是:
如果未实现
__bool __()
函数和__len __()
函数,则任何对象布尔值都被视为true。如果对象没有定义
__bool __()
函数,而是定义了__len __()
函数,则使用__len __()
函数获取对象的布尔值。
如果__len __()
返回0,则bool()函数将返回False,否则返回True。对于
None
和False
常量,布尔值将为False。对于零值数字(例如0、0.0、0j,Decimal(0)和Fraction(0,1)),布尔值将为False。
对于空序列(元组,字典)和集合(例如",(),[],{}等),布尔值将为False。
Python bool()示例
让我们看一些带有bool实例和None的bool()简单示例。
x = True b = bool(x) print(type(x)) # <class 'bool'> print(type(b)) # <class 'bool'> print(b) # True x = False b = bool(x) print(b) # False x = None b = bool(x) print(type(x)) # <class 'NoneType'> print(type(b)) # <class 'bool'> print(b) # False
带有字符串的Python bool()
# string examples x = 'True' b = bool(x) print(type(x)) # <class 'str'> print(type(b)) # <class 'bool'> print(b) # True x = 'False' b = bool(x) print(b) # True because len() is used x = '' print(bool(x)) # False, len() returns 0
带有数字的Python bool()
from fractions import Fraction from decimal import Decimal print(bool(10)) # True print(bool(10.55)) # True print(bool(0xF)) # True print(bool(10 - 4j)) # True print(bool(0)) # False print(bool(0.0)) # False print(bool(0j)) # False print(bool(Decimal(0))) # False print(bool(Fraction(0, 2))) # False
带有集合和序列的Python bool()函数
tuple1 = () dict1 = {} list1 = [] print(bool(tuple1)) # False print(bool(dict1)) # False print(bool(list1)) # False
带有自定义对象的Python bool()函数
让我们看看自定义对象会发生什么。
我不会为该对象定义__bool __()
和__len __()
函数。
class Data: id = 0 def __init__(self, i): self.id = i d = Data(0) print(bool(d)) d = Data(10) print(bool(d))
输出:
True True
由于未定义__bool __()
和__len __()
函数,因此对象布尔值将返回True。
让我们向Data类添加__len __()
函数。
# returns 0 for id <= 0, else id def __len__(self): print('len function called') if self.id > 0: return self.id else: return 0
输出:
len function called False len function called True
很明显__len __()
函数是通过bool()调用的。
当返回0时,bool()函数将返回False。
当返回正整数时,则bool()函数将返回True。
现在,我们向Data类添加__bool __()
函数:
# returns True for id > 0 else False def __bool__(self): print('bool function called') return self.id > 0
现在上面的代码片段输出将是:
bool function called False bool function called True
从输出中可以清楚地看到,如果同时为对象定义了__bool __()
和__len __()
函数,则可以使用__bool __()
函数来获取对象的布尔值。