阅读量:0
在Python中,可以使用bool()
函数将其他数据类型转换为布尔值
- 整数(int):非零整数将被转换为True,0将被转换为False。
print(bool(42)) # True print(bool(0)) # False
- 浮点数(float):非零浮点数将被转换为True,0.0将被转换为False。
print(bool(3.14)) # True print(bool(0.0)) # False
- 字符串(str):非空字符串将被转换为True,空字符串将被转换为False。
print(bool("hello")) # True print(bool("")) # False
- 列表(list)、元组(tuple)和集合(set):非空列表、元组或集合将被转换为True,空的列表、元组或集合将被转换为False。
print(bool([1, 2, 3])) # True print(bool([])) # False print(bool((1, 2, 3))) # True print(bool(())) # False print(bool({1, 2, 3})) # True print(bool(set())) # False
- 字典(dict):非空字典将被转换为True,空字典将被转换为False。
print(bool({"key": "value"})) # True print(bool({})) # False
- 自定义对象:如果对象定义了
__bool__()
方法,则该方法的返回值将决定布尔值。如果未定义__bool__()
方法但定义了__len__()
方法,则根据__len__()
方法的返回值是否为零来确定布尔值。如果两者都未定义,则所有实例将被视为True,除了None
,它将被视为False。
class MyClass: def __init__(self, value): self.value = value def __bool__(self): return bool(self.value) obj1 = MyClass(42) obj2 = MyClass(0) print(bool(obj1)) # True print(bool(obj2)) # False