首页 / Python3 入门教程 / 运算符全解

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

比较运算符

比较运算的结果是布尔值 TrueFalse

>>> 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 运算符」等,改写后所得。