bool值判断

Python
Python中True或者False的在各种对象中的对应情况
发布于

2025年9月24日

在Python中,所有对象都有一个“布尔值”(truth value),用于判断该对象在布尔上下文中(如if语句、while循环等)被视为True还是False

基本规则

Python定义了以下情况被视为“假值”(False): 1. 常量NoneFalse 2. 数值类型的零:00.00j(复数零) 3. 空序列/集合:''(空字符串)、()(空元组)、[](空列表)、{}(空字典)、set()(空集合) 4. 其他自定义的“空”对象(实现了__bool__()__len__()方法并返回False0

除上述情况外,所有对象都被视为真值(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