


















在 Python 3 中,条件表达式(Conditional Expression)是一种简洁的写法,用于根据条件返回不同的值。它常被称为三元运算符或三元表达式,因为它的形式包含三个操作数:条件、真值、假值。
value_if_true if condition else value_if_false
condition,如果为 True,则整个表达式的值为 value_if_true;否则为 value_if_false。# 基本用法
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 输出:成年
# 用于函数返回值
def max_num(a, b):
return a if a > b else b
print(max_num(5, 3)) # 输出:5
可以嵌套使用,但过度嵌套会降低可读性,建议谨慎。
score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(grade) # 输出:B
更好的写法是使用普通的 if-elif-else 语句,更清晰。
if-else 语句的区别| 特性 | 条件表达式(三元) | if-else 语句 |
|---|---|---|
| 类型 | 表达式(有返回值) | 语句(无返回值) |
| 使用场景 | 需要返回一个值时(如赋值、参数) | 执行多条语句或分支逻辑 |
| 可读性 | 适用于简单条件 | 适用于复杂分支 |
# 条件表达式(赋值)
x = 10 if flag else 20
# if-else 语句(不能直接赋值)
if flag:
x = 10
else:
x = 20
条件表达式的优先级较低(低于 or,高于 lambda),并且是右结合的(即嵌套时从右向左解析)。
例如:
a = 1 if x else 2 if y else 3
# 等价于:a = 1 if x else (2 if y else 3)
建议使用括号明确意图,避免歧义。
nums = [1, 2, 3, 4, 5]
result = [x*2 if x%2==0 else x for x in nums] # [1, 4, 3, 8, 5]
f = lambda x: "even" if x % 2 == 0 else "odd"
condition ? true_value : false_valuetrue_value if condition else false_value(更接近自然语言)if-elif-else。else:条件表达式不能省略 else,否则会报语法错误。# 错误:缺少 else
x = 10 if flag # SyntaxError
# 根据用户权限返回不同消息
user_role = "admin"
message = "欢迎回来,管理员!" if user_role == "admin" else "欢迎访问!"
print(message)
# 处理可能为 None 的值
data = None
result = data if data is not None else "默认值"
print(result) # 输出:默认值
Python 的条件表达式提供了一种紧凑、可读的方式来实现简单的条件分支。它非常适合用于赋值、函数返回或列表推导中,但应保持简洁,避免牺牲代码清晰度。记住其语法形式:真值 if 条件 else 假值。
如有更复杂的分支需求,请使用传统的 if-elif-else 语句。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。