网站首页 > 技术文章 正文
1. 表达式基础
定义:表达式是代码中能计算并返回一个值的代码片段。
组成:由操作数(变量、字面量)和操作符(运算符、函数调用)构成。
特点:不包含语句(如 if、for)、可嵌套(如 (a + b) * c)。
2. 核心表达式类型
(1) 字面量表达式
直接表示固定值的表达式:
42 # 整型
True # 布尔型
None # 空值
[1, 2] # 列表
{"k": "v"} # 字典
(2) 变量表达式
变量名作为表达式,返回其绑定的值:
x # 返回变量 x 的值
(3) 算术表达式
数学运算:
a + b # 加法
(4) 比较表达式
返回布尔值(True/False):
a == b # 等于
a != b # 不等于
a > b # 大于
a < b # 小于
a >= b # 大于等于
a <= b # 小于等于
a is b # 对象身份相同
a in b # a 是 b 的成员(如列表、字符串)
(5) 逻辑表达式
布尔运算(短路求值):
a and b # 与(a 为假时返回 a,否则返回 b)
a or b # 或(a 为真时返回 a,否则返回 b)
not a # 非
(6) 赋值表达式(Walrus Operator)
:= 在表达式中赋值(Python 3.8+):
data = [1,2,3,4,5,6]
if (n := len(data)) > 5: # 将 len(data) 赋值给 n 并比较
print(n) # 返回6
(7) 条件表达式(三元运算符)
简化 if-else:
x if condition else y # 条件为真返回 x,否则返回 y
(8) 函数调用表达式
调用函数并返回值:
abs(-10) # 返回 10
math.sqrt(4) # 返回 2.0
(9) 容器操作表达式
索引:
lst[0] # 列表索引
dct["key"] # 字典键访问
切片:
s[1:4] # 序列切片(如字符串、列表)
推导式(返回新容器):
[x*2 for x in range(5)] # 列表推导式 → [0, 2, 4, 6, 8]
{x: x**2 for x in [1, 2, 3]} # 字典推导式 → {1:1, 2:4, 3:9}
(10) 属性访问表达式
访问对象属性:
obj.attr # 返回对象 obj 的 attr 属性
(11) 生成器表达式
惰性求值,返回迭代器:
(x**2 for x in range(10)) # 生成器对象(节省内存)
(12) Lambda 表达式
匿名函数:
lambda x, y: x + y # 返回函数对象
3. 表达式特性
优先级:运算符执行顺序(如 * 优先于 +)。
3 + 4 * 5 # 等价于 3 + (4*5) = 23
结合性:同优先级运算符的方向(如 2 ** 3 ** 2 等价于 2 ** (3 ** 2))。
短路求值:逻辑表达式在结果确定时停止计算(如 False and func() 不调用 func())。
4. 高级表达式
星号解包:
[*range(3), *"ab"] # 合并列表 → [0, 1, 2, 'a', 'b']
异步表达式:
await coroutine() # 等待协程结果
类型注解表达式(Python 3.8+):
x: int = 10 # 类型声明(不影响运行时)
5. 表达式 vs 语句
表达式 | 语句 |
返回一个值(如 1+2→3) | 执行操作(如 print()) |
可嵌套(如 max(a, b)) | 不可嵌套(如 if 不能放 = 右侧) |
可作函数参数 | 不能直接作参数 |
猜你喜欢
- 2025-07-24 Python语言中的运算符(python中运算符的用法)
- 2025-07-24 Python基础知识点总结(python基础重点)
- 2025-07-24 揭秘Python内置函数:为什么高手都离不开它们?
- 2025-07-24 Python基础入门之自定义函数详解(python 自定义方法)
- 2025-07-24 Python 闭包:深入理解函数式编程的核心概念
- 2025-07-24 Python异常处理 让程序更稳健(python 异常处理方法)
- 2025-07-24 Python中的函数注释:参数有冒号,声明后有-> 箭头
- 2025-07-24 Python编程之旅:定义自定义异常的艺术
- 2025-07-24 Python源代码文件字符编码声明(python文件指定编码)
- 2025-07-24 构建并发布你的自定义 Python 包(创建自定义函数python)
- 285℃Python短文,Python中的嵌套条件语句(六)
- 282℃PythonNet:实现Python与.Net代码相互调用!
- 281℃python笔记:for循环嵌套。end=""的作用,图形打印
- 278℃Python实现字符串小写转大写并写入文件
- 276℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 135℃原来2025是完美的平方年,一起探索六种平方的算吧
- 120℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 112℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)