表达式有返回值、可参与计算,语句执行动作、不产生值;前者用于求值上下文如函数参数、条件分支,后者用于控制流程如赋值、循环、定义函数。

Python中表达式和语句最根本的区别在于:表达式有返回值,能参与计算;语句是执行动作,本身不产生值。这个区别看似简单,却直接影响代码能否写对、函数如何设计、调试为何报错。
表达式:能“算出结果”的东西
表达式由操作数和运算符组成,Python解释器会对其求值并返回一个结果。它可单独存在,更常出现在赋值、函数调用、条件判断等需要值的上下文中。
-
数字运算:
3 + 5、len("hello")、True and False都是表达式,分别返回8、5、False -
字面量与变量:
42、"abc"、x(假设 x 已定义)本身也是表达式,值就是它们代表的内容 -
函数调用:
print("hi")是表达式(返回None),但注意:它的作用是输出,返回值只是副产品
语句:执行动作的指令
语句完成某项操作,比如赋值、循环、定义函数或控制流程。它不返回值(或者说返回值无意义),不能放在需要值的位置。
-
赋值语句:
x = 10是语句,不是表达式——你不能写y = (x = 10)(Python 3.8+ 的海象运算符:=是例外,它是表达式赋值) -
控制流语句:
if x > 0: print("ok")、for i in range(3): pass、def f(): return 1全部是语句,不能嵌入到表达式中 -
导入与删除:
import math、del x同样是纯动作,没有返回值概念
关键语法边界:为什么有些地方只能用表达式?
Python很多语法结构明确要求填入表达式,若误塞入语句,会直接报 SyntaxError。
10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A
立即学习“Python免费学习笔记(深入)”;
-
函数参数必须是表达式:写
max(x = 10, y)错误,因为x = 10是语句;应写max(10, y)或用海象符max((x := 10), y) -
列表推导式内部只接受表达式:写
[x = x + 1 for x in lst]报错;正确写法是[x + 1 for x in lst],如需副作用,应改用普通循环 -
条件表达式(三元运算)左右分支必须是表达式:
"yes" if cond else x = 10不合法;应写"yes" if cond else 10
一个直观验证方法:在交互式环境里试试
打开 Python REPL,输入以下内容观察行为:
-
3 + 4→ 显示7(表达式,有输出) -
x = 3 + 4→ 无输出(语句,仅执行赋值) -
print(x = 3 + 4)→ 报错SyntaxError(语句不能当参数) -
print(x := 3 + 4)→ 输出7(:=是表达式,返回赋值结果)









