Python3 运算符
算术运算符
-
-
- 与数学一致;需要特别记住 / 是真除(结果必为浮点)、// 向下取整、% 取余、** 幂:
-
print(7 / 2) # 输出:3.5,真除法
print(7 // 2) # 输出:3,地板除向下取整
print(-7 // 2) # 输出:-4,负数注意是"向下"而非"向零"
print(7 % 2) # 输出:1,取余
print(2 ** 10) # 输出:1024,幂运算
比较运算符
比较结果永远是布尔值,还支持链式写法:
print(3 > 2, 3 == 3, 3 != 4) # 输出:True True True
print(1 < 2 < 3) # 输出:True,等价 1<2 and 2<3
赋值运算符
= 是赋值;+=、-=、*=、/=、//=、%= 等是复合赋值,先运算再赋值;还支持链式赋值:
x = 10
x += 3 # 等价于 x = x + 3
print(x) # 输出:13
a = b = 0 # 链式赋值,a、b 都为 0
Python 3.8 起新增海象运算符 :=,可以在表达式中赋值并立刻使用该值:
if (n := len("hello")) > 3:
print(n) # 输出:5,赋值的同时参与比较
逻辑运算符
and、or、not 按布尔逻辑运算,且具有短路特性:and 遇假即停,or 遇真即停,并返回最后参与运算的那个值:
print(True and False) # 输出:False
print(False or 3) # 输出:3,短路后直接返回 3
print(not "") # 输出:True,空字符串为假
x = 0 or "默认值"
print(x) # 输出:默认值,常用 or 设置默认值
位运算符
& 按位与、| 按位或、^ 按位异或、~ 取反、<< 左移、>> 右移,用于二进制层面的计算:
print(5 & 3) # 输出:1(101 & 011 = 001)
print(5 | 3) # 输出:7(101 | 011 = 111)
print(5 ^ 3) # 输出:6(101 ^ 011 = 110)
print(5 << 1) # 输出:10,左移一位相当于乘 2
成员与身份运算符
in / not in 判断元素是否存在;is / is not 判断是否为同一个对象,而 == 只比较值是否相等:
print("a" in "abc") # 输出:True
a = [1, 2]
b = [1, 2]
print(a == b) # 输出:True,值相等
print(a is b) # 输出:False,是两个不同对象
print(a is a) # 输出:True,自身就是同一个对象
小整数、短字符串等会被解释器缓存,此时 is 偶尔也为 True,但判断值请始终使用 ==。
优先级速查表
从高到低大致为:
** → 正负号 → * / // % → + - → 移位 → 按位 & | ^ → 比较 → not → and → or → 赋值
记不住也没关系——用括号明确优先级才是最稳妥的做法。
算术与比较最常用,逻辑 and/or 的短路行为要特别留意,is 与 == 含义不同,必要时用括号保证优先级清晰。