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实际应用
这种特性在编程中非常实用,例如可以直接判断容器是否为空:
my_list = [1, 2, 3]
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)