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 与 == 含义不同,必要时用括号保证优先级清晰。

笔记加载中…