Python布尔类型与逻辑值
布尔类型表示真假,Python 的真值测试规则决定对象的布尔值。
布尔类型
True 和 False
Python
is_true = True
is_false = False
print(type(is_true)) # bool
print(is_true == 1) # True(True 等于 1)
print(is_false == 0) # True(False 等于 0)
布尔运算
Python
# 逻辑运算
print(True and True) # True
print(True and False) # False
print(False or True) # True
print(not True) # False
print(not False) # True
真值测试规则
bool() 函数
Python
print(bool(True)) # True
print(bool(False)) # False
print(bool(1)) # True
print(bool(0)) # False
print(bool("hello")) # True
print(bool("")) # False
假值对象
以下对象布尔值为 False:
Python
# 假值列表
False
None
0, 0.0
"", '' # 空字符串
[], (), {} # 空容器
set(), range(0)
print(bool(None)) # False
print(bool([])) # False
print(bool("")) # False
print(bool(0)) # False
真值对象
非假值对象均为 True:
Python
print(bool(1)) # True
print(bool(-1)) # True
print(bool("hello")) # True
print(bool([1])) # True
print(bool({"a": 1})) # True
条件判断中的应用
直接使用对象
Python
name = "Alice"
if name: # name 为真值(非空字符串)
print(f"Hello, {name}")
items = []
if not items: # items 为假值(空列表)
print("Empty list")
常见模式
Python
# 检查非空
def process(items):
if items: # 非空则处理
return sum(items)
return 0
# 检查变量存在
value = None
if value is not None:
print(value)
# 短路求值
x = 10
result = x > 5 and "big" or "small"
print(result) # big
逻辑运算符
and 运算
Python
# 返回第一个假值或最后一个真值
print(True and 5) # 5
print(5 and True) # True
print(False and 5) # False
print(0 and 5) # 0
print(None and 5) # None
or 运算
Python
# 返回第一个真值或最后一个假值
print(False or 5) # 5
print(None or 5) # 5
print(0 or False) # False
print([] or "empty") # empty
not 运算
Python
print(not True) # False
print(not False) # True
print(not []) # True
print(not [1]) # False
比较运算返回布尔值
比较运算
Python
print(5 > 3) # True
print(5 < 3) # False
print(5 == 5) # True
print(5 != 3) # True
print(5 >= 5) # True
print(5 <= 3) # False
链式比较
Python
x = 5
print(1 < x < 10) # True
print(1 < x > 10) # False
# 等价于
print(1 < x and x < 10) # True
实际应用
默认值设置
Python
def greet(name=None):
# name 为 None 或空时使用默认值
display_name = name or "Guest"
print(f"Hello, {display_name}")
greet() # Hello, Guest
greet("Alice") # Hello, Alice
greet("") # Hello, Guest(空字符串为假值)
条件过滤
Python
values = [0, 1, 2, None, "", "hello", [], [1]]
# 过滤真值
filtered = [v for v in values if v]
print(filtered) # [1, 2, 'hello', [1]]
要点总结
- 布尔值只有 True 和 False
- 假值:None、0、空容器、空字符串、False
- 非假值对象均为真值
and返回第一个假值或最后一个真值or返回第一个真值或最后一个假值
📝 发现内容有误?点击此处直接编辑