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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Blog of Author Tim Ferriss
B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
T
Troy Hunt's Blog
I
InfoQ
L
LINUX DO - 热门话题
WordPress大学
WordPress大学
C
Cisco Blogs
G
GRAHAM CLULEY
The Register - Security
The Register - Security
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
H
Hacker News: Front Page
小众软件
小众软件
雷峰网
雷峰网
The Hacker News
The Hacker News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
博客园 - 聂微东
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
The GitHub Blog
The GitHub Blog
腾讯CDC
P
Palo Alto Networks Blog
Scott Helme
Scott Helme

博客园 - 箫笛

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 编程 - 字符串(str) Python 编程 - 字典(dict) Python 编程 - 列表(list) Python 编程 - 数据类型和数据结构 Python 编程 - 语句 Python 编程 - 函数 windows - WSL 的安装与使用 shell编程 - dialog 程序使用指南 FE Team - 如何做好前端代码审查 git 提交的撤销和恢复 React15 - redux-saga 如何在saga中实现轮询接口调用? React15 - React CSS Modules BEM命名实践 React15 - React 15 中 componentWillReceiveProps 为什么会多次调用, 同时componentDidUpdate 也会多次调用? React15 - React15类组件多次执行render方法的原因? React15 - React15应用中代码逻辑复用方案 React15 - React状态同步问题解决 React15 - React 15 中 React.pureComponent 的使用场景 React15 - React 15应用在页面渲染时会多次执行类组件的render 函数的原因 React15 - React 15 中能用 componetDidUpdate 代替 componentWillReceiveProps 吗? React15 - React 15 生命周期函数详解 React15 - 如何在React 15中实现自定义的事件订阅与发送(例如组件间通信) React15 - React15应用中的事件订阅和发送机制 React15 - CSS中的BEM规范 React15 - React CSS Modules BEM命名实践 React15 - 写sass 样式文件,嵌套的结构好,还是扁平的结构好? React15 - sass 中 @mixin 和 @extend 的区别是什么? React15 - React 15 应用 如何使用Css moudules 方式进行模块化开发 React15 - React15应用Sass使用指南 React15 - React 15 应用如何进行性能优化?
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 语句。