惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
B
Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
WordPress大学
WordPress大学
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
U
Unit 42
雷峰网
雷峰网
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
美团技术团队
Y
Y Combinator Blog
腾讯CDC
B
Blog RSS Feed
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements

博客园 - 箫笛

Tkinter - Entry 输入框组件 Tkinter - Button 组件 Tkinter - Label 组件 Tkinter - tk 变量 Tkinter - 事件与绑定 Tkinter - 几何管理器 Tkinter - 核心概念 Tkinter - 快速开始 Tkinter - 介绍 Python 编程 - 星号下划线参数释义 shell 编程 - shell 脚本的交互方式 Python insall - macOS 系统安装python的几种方式 Miniconda - Python 环境管理工具 Tkinter - Python GUI 开发 Python 编程 - 下划线命名的区别 Python 编程 - 元类编程 Python 编程 - 多重继承与MRO Python 编程 - 描述符协议 Python 编程 - 类型注解 Python 编程 - 生成器表达式 Python 编程 - 集合 Python 编程 - 装饰器 Python 编程 - 闭包 Python 编程 - 列表推导式 Python 编程 - 函数式编程 Python 编程 - lambda 函数 Python 编程 - 文件操作 Python 编程 - 输入与输出 Python 编程 - 面向对象编程 Python 编程 - 元组(tuple)
Python 编程 - 条件表达式
箫笛 · 2026-07-07 · via 博客园 - 箫笛

在 Python 3 中,条件表达式(Conditional Expression)是一种简洁的写法,用于根据条件返回不同的值。它常被称为三元运算符三元表达式,因为它的形式包含三个操作数:条件、真值、假值。


1. 基本语法

value_if_true if condition else value_if_false
  • 先评估 condition,如果为 True,则整个表达式的值为 value_if_true;否则为 value_if_false
  • 这是一个表达式(有返回值),可以出现在任何需要值的地方(如赋值、函数参数、列表推导等)。

2. 简单示例

# 基本用法
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

3. 嵌套条件表达式

可以嵌套使用,但过度嵌套会降低可读性,建议谨慎。

score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(grade)  # 输出:B

更好的写法是使用普通的 if-elif-else 语句,更清晰。


4. 与 if-else 语句的区别

特性 条件表达式(三元) if-else 语句
类型 表达式(有返回值) 语句(无返回值)
使用场景 需要返回一个值时(如赋值、参数) 执行多条语句或分支逻辑
可读性 适用于简单条件 适用于复杂分支
# 条件表达式(赋值)
x = 10 if flag else 20

# if-else 语句(不能直接赋值)
if flag:
    x = 10
else:
    x = 20

5. 优先级与结合性

条件表达式的优先级较低(低于 or,高于 lambda),并且是右结合的(即嵌套时从右向左解析)。

例如:

a = 1 if x else 2 if y else 3
# 等价于:a = 1 if x else (2 if y else 3)

建议使用括号明确意图,避免歧义。


6. 常见使用场景

  • 简化赋值:根据条件给变量赋不同值。
  • 列表推导中的过滤与映射
    nums = [1, 2, 3, 4, 5]
    result = [x*2 if x%2==0 else x for x in nums]  # [1, 4, 3, 8, 5]
    
  • lambda 函数中
    f = lambda x: "even" if x % 2 == 0 else "odd"
    

7. 与其他语言三元运算符的对比

  • C/Java/JavaScript:condition ? true_value : false_value
  • Python:true_value if condition else false_value(更接近自然语言)

8. 注意事项与最佳实践

  1. 避免过度嵌套:超过两层建议改用 if-elif-else
  2. 确保两个分支返回类型一致(虽然 Python 不强制,但混用类型可能引起后续错误)。
  3. 不要滥用:只在逻辑简单且有助于提高可读性时使用。
  4. 必须包含 else:条件表达式不能省略 else,否则会报语法错误。
# 错误:缺少 else
x = 10 if flag   # SyntaxError

9. 示例:实际应用

# 根据用户权限返回不同消息
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 语句。