Python 提供了丰富的运算符,覆盖数值计算、逻辑判断、位运算、对象比较、容器操作等多个方面。
算术运算符
用于数值计算,部分运算符可扩展到序列或矩阵。
包括:+(加法)、-(减法 / 取负)、*(乘法)、/(浮点除法)、//(整除)、%(取余)、**(幂运算)、@(矩阵乘法)。
print(1 + 2) # 3
print(5 - 2) # 3
print(3 * 4) # 12
print(7 / 2) # 3.5
print(7 // 2) # 3
print(7 % 2) # 1
print(2 ** 3) # 8
print(-2 ** 2) # 等价于 -(2 ** 2),结果为 -4(右结合特性)
# 矩阵乘法(需 NumPy)
import numpy as np
A = np.array([[1, 2],[3, 4]])
B = np.array([[5, 6],[7, 8]])
print(A @ B)/ 总是返回浮点数。
// 执行向下取整(floor division),结果为不大于真除法结果的最大整数。
% 的余数符号与除数一致。
** 是右结合,优先级高于一元负号。
对矩阵乘法使用 @,需依赖如 等库。
对序列(如字符串、列表)而言,仅支持 +(拼接)与 *(重复)。
Python 中运算符本质上是调用(如 a + b 调用 a.__add__(b))。
请参阅:
比较运算符
用于数值、对象或容器间的值比较、成员测试与身份判断。
包括:
值比较运算符:==(相等)、!=(不等)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
成员运算符:in(是成员)、not in(不是成员)。
身份运算符:is(是同一对象)、is not(不是同一对象)。
print(3 == 3) # True
print(3 != 4) # True
print(2 < 5) # True
print("a" in "cat") # True
print("x" not in "cat")# True
a = [1, 2]
b = [1, 2]
print(a == b) # True (值相等)
print(a is b) # False (不是同一对象)值比较通过 __eq__() 等方法实现。
成员测试底层调用 __contains__() 方法。
身份判断通过比较对象的唯一标识(如 CPython 中的内存地址)。
请参阅:
逻辑运算符
用于布尔逻辑计算。
包括:and(与)、or(或)、not(非)。
print(True and False) # False
print(True or False) # True
print(not 0) # True逻辑判断依赖 Python 的。
and、or 具有短路求值特性。
not 始终返回布尔值。
and、or 可能返回某个操作数本身,而非布尔值。在 Python 中,逻辑表达式返回最后被求值的操作数,而非强制转换为 True / False。
请参阅:
位运算符
对整数按二进制位进行操作。
包括:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)。
print(5 & 3) # 1 -> 0101 & 0011 = 0001
print(5 | 3) # 7 -> 0101 | 0011 = 0111
print(5 ^ 3) # 6 -> 0101 ^ 0011 = 0110
print(~5) # -6 -> 按位取反
print(5 << 1) # 10 -> 左移一位
print(5 >> 1) # 2 -> 右移一位位运算仅定义于整数类型,对浮点数和复数无效。
Python 中的整数支持无限精度,因此左移不会溢出。
~x 等价于 -(x+1)。
右移负数时采用算术移位。算术右移会保留符号位,以保证负数右移后仍为负。
请参阅:
赋值运算符
用于将值绑定到变量,并支持复合形式。
包括:基本赋值(=)、算术复合赋值(+=、-=、*=、/=、//=、%=、**=)、位运算复合赋值(&=、|=、^=、<<=、>>=)以及海象运算符(:=)。
x = 5
x += 2 # 7
x *= 3 # 21
# 海象运算符 :=
if (n := len("hello")) > 3:
print(n) # 5Python 的赋值本质上是名称绑定。变量名仅是对象的引用标签,而非内存中的容器。
复合赋值会优先尝试原地修改(可变对象常见),若对象不可变则会新建并重新绑定。部分类型(如 list、set)在复合赋值时会原地修改对象,而不会生成新对象。
链式赋值可能带来别名效应,需谨慎使用。
海象运算符 := 让赋值可出现在表达式中,但优先级较低。常用于 while 或 if 条件中同时赋值与判断。
请参阅:
访问与调用运算符
用于访问对象元素、属性和调用。
包括:[](下标/切片运算符)、.(属性访问运算符)、()(调用运算符)。
# 下标
lst = [1, 2, 3]
print(lst[0]) # 1
# 属性
s = "abc"
print(s.upper()) # "ABC"
# 调用
def f(x): return x+1
print(f(3)) # 4[] 访问或修改容器元素。
. 访问对象属性或方法。
() 调用函数、类或可调用对象。
这类运算符的优先级最高,常出现在表达式最右侧。
请参阅:
优先级与结合性
优先级(从高到低):
1、函数调用 ()、索引 []、属性访问 .
2、幂运算 **
3、一元运算符 +x、-x、~x
4、乘除取余 *、/、//、%、@(矩阵乘法)
5、加减 +、-
6、位移 <<、>>
7、按位与 &
8、按位异或 ^
9、按位或 |
10、逻辑 not
11、比较 ==、!=、<、<=、>、>=、成员 in / not in、身份 is / is not
12、逻辑 and
13、逻辑 or
14、海象 :=
15、赋值 = 及复合赋值
结合性:
除了幂运算 ** 是右结合外,其他运算符都是左结合。
小结
Python 的运算符可分为:算术、比较(含值比较、成员、身份)、逻辑、位运算、赋值及访问类六类。
它们共同构成表达式的核心语法结构,既能执行数值计算,也能灵活操作对象与容器。
熟悉每种运算符的语义、优先级与结合性,有助于编写更清晰、精确且高效的 Python 代码。
“点赞有美意,赞赏是鼓励”
热门跟贴