表达式求值产生结果,语句执行动作;表达式如1+2、len("hello")返回值,语句如if、for、def不返回值,不可用于需值的上下文。
Python里表达式和语句常被混用,但它们角色不同:表达式求值产生结果,语句执行动作。理解这个区别,才能写出更清晰、更少副作用的代码。
表达式是能计算出一个值的结构,比如 1 + 2、len("hello")、x if x > 0 else -x。它本身不改变状态,只返回值。
常见表达式类型包括:
意:虽有副作用,仍是表达式)⚠️ 注意:print() 是函数调用表达式,返回 None。所以 x = print("hi") 后,x 的值是 None,不是字符串。
语句是执行某种操作的指令,不产生可被使用的值。Python 解释器会执行它,但不会把它当作“结果”传递给别的地方。
典型语句包括:
? 关键点:你不能把语句直接放在需要值的位置。例如 result = if x > 0: 1 else 0 是语法错误——if 是语句,不能出现在等号右边;必须改用条件表达式:result = 1 if x > 0 else 0。
当一个表达式单独写在一行时,它就构成“表达式语句”,比如:
这类语句会被计算,结果通常被丢弃(除非在交互式环境里,解释器会自动打印)。它们常用于调试或触发副作用(如 logging.debug("here")),但不建议依赖其返回值做逻辑判断。
初学者常误把语句当表达式用,导致 SyntaxError 或逻辑错误:
掌握表达式与语句的边界,能让代码更符合 Python 的直觉,也更容易被他人读懂。