Python3 入门教程
运算符全解
本教程共 70 篇 · 第 9 篇 · 更新于 2026-07-22 · 约 3 分钟阅读
PythonPython3 入门教程运算符逻辑短路is 与 ==位运算
9. 运算符全解
本节目标:掌握 Python 各类运算符的用法和优先级,写出正确的表达式。
算术运算符
>>> 10 + 3 # 加法
13
>>> 10 - 3 # 减法
7
>>> 10 * 3 # 乘法
30
>>> 10 / 3 # 除法(结果始终为浮点数)
3.3333333333333335
>>> 10 // 3 # 地板除(取整数部分)
3
>>> 10 % 3 # 取模(余数)
1
>>> 10 ** 3 # 幂运算
1000
>>> -10 # 负数
-10
>>> +10 # 正数(很少单独用)
10
比较运算符
比较运算的结果是布尔值 True 或 False。
>>> 5 == 5 # 等于
True
>>> 5 != 3 # 不等于
True
>>> 5 > 3 # 大于
True
>>> 5 < 3 # 小于
False
>>> 5 >= 5 # 大于等于
True
>>> 5 <= 3 # 小于等于
False
Tip比较运算符可以链式使用:
1 < x < 10在 Python 里完全合法,等价于1 < x and x < 10。这在数学上很直观,其他语言不一定支持。
赋值运算符
x = 10
x += 3 # 等价于 x = x + 3,x 变为 13
x -= 3 # x = x - 3
x *= 2 # x = x * 2
x /= 2 # x = x / 2
x //= 2 # x = x // 2
x %= 3 # x = x % 3
x **= 2 # x = x ** 2
逻辑运算符
>>> True and False # 与,全 True 才 True
False
>>> True or False # 或,有一个 True 就 True
True
>>> not True # 非,取反
False
逻辑运算有「短路」特性:
>>> 0 and 999 # 0 是假,直接返回 0,不判断 999
0
>>> 3 or 999 # 3 是真,直接返回 3,不判断 999
3
Note短路求值很实用。比如
user and user.name:如果user为 None,直接返回 None,不会报错。如果不用短路特性,会抛出 AttributeError。
位运算符
对整数的二进制位进行操作:
>>> 5 & 3 # 按位与:0101 & 0011 = 0001
1
>>> 5 | 3 # 按位或:0101 | 0011 = 0111
7
>>> 5 ^ 3 # 按位异或:相同为 0,不同为 1
6
>>> ~5 # 按位取反
-6
>>> 5 << 1 # 左移 1 位,相当于乘以 2
10
>>> 5 >> 1 # 右移 1 位,相当于除以 2(地板除)
2
位运算在底层开发、权限系统、图形处理中常见。日常业务代码用得不多,了解即可。
成员运算符
>>> 3 in [1, 2, 3, 4]
True
>>> 'a' not in 'hello'
True
对于字典,in 判断的是键是否存在:
>>> d = {"name": "Alice", "age": 25}
>>> "name" in d
True
>>> "Alice" in d # 判断的是键,不是值
False
身份运算符
is 判断两个变量是否指向同一个对象,== 判断值是否相等。
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a == b
True
>>> a is b
False
Warning初学者常混淆
==和is。判断值是否相等用==,判断是否为同一个对象用is。判断 None 时用is None,不要用== None:>>> x = None >>> x is None True
小整数和短字符串会被缓存复用,所以有时 is 也会返回 True:
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False # 超出缓存范围,是两个不同对象
这个行为是 CPython 的优化细节,不要依赖它写逻辑。
运算符优先级
从高到低排列(常用部分):
| 优先级 | 运算符 |
|---|---|
| 高 | () 括号 |
** 幂运算 | |
+x, -x, ~x 正负、按位取反 | |
*, /, //, % 乘除取模 | |
+, - 加减 | |
<<, >> 位移 | |
& 按位与 | |
^ 按位异或 | |
| 按位或 | |
==, !=, >, <, >=, <=, is, in 比较 | |
not 逻辑非 | |
and 逻辑与 | |
| 低 | or 逻辑或 |
记不住优先级没关系,多用括号。代码是写给人看的,明确比简洁更重要。
# 不好的写法
result = a + b * c ** d - e / f
# 好的写法
result = a + (b * (c ** d)) - (e / f)
来源:参考了 runoob「Python3 运算符」、w3cschool「Python3 运算符」等,改写后所得。