bool值判断
Python
Python中True或者False的在各种对象中的对应情况
在Python中,所有对象都有一个“布尔值”(truth value),用于判断该对象在布尔上下文中(如if
语句、while
循环等)被视为True
还是False
。
基本规则
Python定义了以下情况被视为“假值”(False
): 1. 常量None
和False
2. 数值类型的零:0
、0.0
、0j
(复数零) 3. 空序列/集合:''
(空字符串)、()
(空元组)、[]
(空列表)、{}
(空字典)、set()
(空集合) 4. 其他自定义的“空”对象(实现了__bool__()
或__len__()
方法并返回False
或0
)
除上述情况外,所有对象都被视为真值(True
),包括: - 非零数值(如1
、-3.14
) - 非空序列/集合(如'hello'
、[1,2]
、{3,4}
) - 大部分自定义对象
示例验证
# 数值类型
print(bool(0)) # False
print(bool(1)) # True
print(bool(-5)) # True
print(bool(0.0)) # False
print(bool(3.14)) # True
# 字符串
print(bool('')) # False
print(bool('a')) # True
print(bool(' ')) # True(空格也是有效字符)
# 列表
print(bool([])) # False
print(bool([1])) # True
# 其他类型
print(bool(None)) # False
print(bool({})) # False
print(bool(set())) # False
print(bool(())) # False
实际应用
这种特性在编程中非常实用,例如可以直接判断容器是否为空:
= [1, 2, 3]
my_list if my_list: # 等价于 if len(my_list) > 0
print("列表非空")
= ""
my_str if not my_str: # 等价于 if len(my_str) == 0
print("字符串为空")
注意点
- 空字符串
''
和包含空格的字符串' '
不同,后者是真值 - 数值
0
是假值,但字符串'0'
是真值(因为它是非空字符串) None
是假值,但与False
不同(None == False
的结果是False
)