12 Python 语句、表达式与运算符
语句与表达式 (Statements vs. Expressions)
这是编程中非常核心的概念,区分它们有助于你理解代码是如何运行的。
什么是表达式 (Expression)?
表达式是“由于计算而产生值”的代码片段。 简单来说,只要你能把它放在 print() 函数里打印出来的,通常都是表达式。
- 特点:它总会返回一个结果(值)。
例子:
1 + 1(计算结果为 2)"Hello World"(字符串本身也是表达式)len("abc")(函数调用返回 3)
什么是语句 (Statement)?
语句是“执行某种动作”的代码单位。 它像是一个指令,告诉 Python 去做某件事(比如赋值、循环、判断),而不是为了生成一个值。
- 特点:它改变了程序的状态(例如改变变量的值),但它本身不“返回”值。
例子:
a = 10(赋值语句)if x > 0:(条件语句)import math(导入语句)
代码对比
# --- 表达式 (Expressions) ---
# 它们都有“值”,可以直接打印
print(3 + 5) # 8
print("Py" + "thon") # Python
# --- 语句 (Statements) ---
x = 10 # 这是一个赋值语句。
# print(x = 10) # 报错!因为赋值语句本身没有返回值,不能被打印。
# 特例:Python 3.8+ 引入了海象运算符 (:=),让赋值也能成为表达式
if (n := len("test")) > 3:
print(f"长度是 {n}") # 这里 n := ... 既赋值了又返回了值计算/算术运算符 (Arithmetic Operators)
用于执行常见的数学运算。Python 的数学运算非常符合直觉。
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 5 + 3 | 8 |
- | 减法 | 5 - 3 | 2 |
* | 乘法 | 5 * 3 | 15 |
/ | 除法 (总是返回浮点数) | 10 / 2 | 5.0 |
// | 整除 (向下取整) | 10 // 3 | 3 |
% | 取模 (求余数) | 10 % 3 | 1 |
** | 幂运算 (次方) | 2 ** 3 | 8 |
代码示例
a = 10
b = 3
print(f"{a} 除以 {b} 等于: {a / b}") # 3.3333...
print(f"{a} 整除 {b} 等于: {a // b}") # 3 (去掉小数部分)
print(f"{a} 对 {b} 取余 等于: {a % b}") # 1 (10 - 3*3 = 1)
print(f"2 的 3 次方: {2 ** 3}") # 8
# 小技巧:利用 % 判断奇偶
num = 7
if num % 2 == 0:
print("偶数")
else:
print("奇数") # 输出这个比较运算符 (Comparison Operators)
用于比较两个值,结果永远是布尔值 (True 或 False)。
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 等于 (注意是两个等号) | 5 == 5 (True) |
!= | 不等于 | 5 != 3 (True) |
> | 大于 | 5 > 3 (True) |
< | 小于 | 5 < 3 (False) |
>= | 大于等于 | 5 >= 5 (True) |
<= | 小于等于 | 4 <= 5 (True) |
代码示例
score = 85
pass_mark = 60
is_passed = score >= pass_mark # 这是一个表达式,计算结果赋值给变量
print(f"是否及格: {is_passed}") # True
# Python 独有的连写比较
x = 5
# 判断 x 是否在 1 到 10 之间
print(1 < x < 10) # True (相当于 1 < x and x < 10)赋值运算符 (Assignment Operators)
除了基本的赋值 =,Python 还提供了复合赋值运算符,用于简化代码(Syntactic Sugar)。
| 运算符 | 等价于 | 示例 |
|---|---|---|
= | 赋值 | c = a + b |
+= | c = c + a | c += a |
-= | c = c - a | c -= a |
*= | c = c * a | c *= a |
/= | c = c / a | c /= a |
代码示例
count = 0
# 传统写法
count = count + 1
# 推荐写法 (更简洁)
count += 1
print(count) # 2
price = 100
price *= 0.8 # 打八折
print(price) # 80.0逻辑运算符 (Logical Operators)
用于组合多个条件,结果也是布尔值。
| 运算符 | 描述 | 逻辑 |
|---|---|---|
and | 与 | 只有两边都为 True,结果才为 True |
or | 或 | 只要有一边为 True,结果就为 True |
not | 非 | 取反,True 变 False,反之亦然 |
关键概念:短路运算 (Short-circuit Evaluation)
Python 比较“懒”,如果看完左边就能确定结果,它就不会去计算右边。
A and B: 如果 A 是 False,结果必为 False,Python 不会去计算 B。A or B: 如果 A 是 True,结果必为 True,Python 不会去计算 B。
代码示例
age = 25
has_ticket = True
# and 演示
if age >= 18 and has_ticket:
print("允许进入")
# not 演示
is_raining = False
if not is_raining:
print("天气不错,出去玩吧")
# 短路演示
def risky_function():
print("我被运行了!")
return True
# 因为 True or ... 结果已经是 True,所以 risky_function 不会被执行
if True or risky_function():
print("短路测试结束")
# 输出结果中不会出现 "我被运行了!"成员运算符 (Membership Operators)
用来测试一个序列(如列表、字符串、元组)中是否包含指定的项。这让代码读起来非常像英语。
| 运算符 | 描述 |
|---|---|
in | 如果在序列中找到值,返回 True |
not in | 如果在序列中没有找到值,返回 True |
代码示例
# 1. 在列表中查找
fruits = ["apple", "banana", "cherry"]
if "banana" in fruits:
print("我想吃香蕉")
# 2. 在字符串中查找
message = "Error: File not found"
if "Error" in message:
print("出现错误!")
# 3. 在字典中查找 (默认查找 Key)
user = {"name": "Jack", "age": 20}
if "name" in user:
print("用户有名字属性")运算符优先级 (Operator Precedence)
当一个表达式中包含多个运算符时,Python 按照什么顺序计算?这就涉及到了优先级。
基本原则 (由高到低):
()括号 (最高优先级,想先算谁就括谁)**幂运算*///%乘除类+-加减类><==比较类notandor(逻辑运算通常最低)
代码示例
# 案例 1: 乘法优先于加法
result = 2 + 3 * 4
print(result) # 14 (先算 3*4=12,再加 2)
# 案例 2: 使用括号改变顺序
result = (2 + 3) * 4
print(result) # 20
# 案例 3: 逻辑运算优先级 (not > and > or)
# 相当于: True or (True and False) -> True or False -> True
print(True or True and False) # True建议:虽然有优先级规则,但在写复杂表达式时,最好使用括号 () 来明确你的意图。这样不仅避免出错,也让代码更容易被别人(和你自己)读懂。
分类:
Python 新手教程
标签:
Python语句表达式运算符
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据