在 Python 编程中,运算符是构建逻辑和数据处理的核心基石。它们用于对变量和值执行各种操作,从简单的数学计算到复杂的内存地址比较。
算术运算符
算术运算符用于执行常见的数学运算。除了基本的加减乘除,Python 还提供了一些特有的运算方式,如整除和幂运算。
运算符 | 描述 | 示例 (a=10, b=3) | 结果 |
+ | 加 | a + b | 13 |
- | 减 | a - b | 7 |
* | 乘 | a * b | 30 |
/ | 除(返回浮点数) | a / b | 3.333... |
% | 取模(余数) | a % b | 1 |
`| 幂 |a b` | 1000 | ||
// | 整除(向下取整) | a // b | 3 |
示例:
a = 10 b = 3 print(f"加法: {a + b}") 13 print(f"除法: {a / b}") 3.3333333333333335 print(f"整除: {a // b}") 3 print(f"取余: {a % b}") 1 print(f"幂运算: {a ** b}") 1000 字符串也支持部分算术运算符 print("Hi" * 3) HiHiHi print("Hi" + 3) 报错:TypeError比较(关系)运算符
比较运算符用于比较两个值,结果总是布尔值 True 或 False。它们在条件判断(if语句)和循环中非常常用。
运算符 | 描述 | 示例 (a=10, b=20) | 结果 |
`| 等于 |a b` | False | ||
!= | 不等于 | a != b | True |
> | 大于 | a > b | False |
< | 小于 | a < b | True |
>= | 大于等于 | a >= b | False |
<= | 小于等于 | a <= b | True |
示例:
x = 5 y = 10 print(x == y) False print(x != y) True print(x < y) True Python 特色:链式比较 z = 7 print(5 < z < 10) True,等价于 (5 < z) and (z < 10)赋值运算符
赋值运算符用于将值赋给变量。除了基本的 =,Python 还支持组合赋值运算符,可以简化代码。
运算符 | 描述 | 示例 (a=10) | 等价于 |
= | 简单赋值 | a = 10 | - |
+= | 加法赋值 | a += 3 | a = a + 3 |
-= | 减法赋值 | a -= 3 | a = a - 3 |
*= | 乘法赋值 | a *= 3 | a = a * 3 |
/= | 除法赋值 | a /= 3 | a = a / 3 |
%= | 取模赋值 | a %= 3 | a = a % 3 |
= | 幂赋值 | a = 3 | a = a ** 3 |
//= | 整除赋值 | a //= 3 | a = a // 3 |
示例:
count = 10 count += 5 count 现在是 15 count *= 2 count 现在是 30 print(count) 连续赋值 a = b = c = 100 print(a, b, c) 100 100 100逻辑运算符
逻辑运算符用于组合多个条件表达式。Python 的逻辑运算符具有“短路”特性,即如果第一个操作数已经能确定最终结果,第二个操作数就不会被评估。
运算符 | 描述 | 示例 (a=True, b=False) | 结果 |
and | 与 | a and b | False |
or | 或 | a or b | True |
not | 非 | not a | False |
示例:
age = 25 has_id = True and: 两者都为真才为真 if age >= 18 and has_id: print("允许进入") or: 只要有一个为真即为真 is_weekend = False is_holiday = True if is_weekend or is_holiday: print("今天休息") not: 取反 is_raining = False if not is_raining: print("不用带伞")位运算符
位运算符直接对整数的二进制位进行操作。虽然在日常业务开发中使用较少,但在底层优化、加密算法或硬件交互中非常有用。
假设 a = 60 (二进制 0011 1100),b = 13 (二进制 0000 1101):
运算符 | 描述 | 示例 | 结果 (二进制) | 结果 (十进制) |
& | 按位与 | a & b | 0000 1100 | 12 |
\| | 按位或 | a \| b | 0011 1101 | 61 |
^ | 按位异或 | a ^ b | 0011 0001 | 49 |
~ | 按位取反 | ~a | 1100 0011(补码) | -61 |
<< | 左移 | a << 2 | 1111 0000 | 240 |
>> | 右移 | a >> 2 | 0000 1111 | 15 |
示例:
a = 60 0011 1100 b = 13 0000 1101 print(a & b) 12 print(a | b) 61 print(a ^ b) 49 print(~a) -61 print(a << 2) 240 print(a >> 2) 15成员运算符
成员运算符用于测试序列(如字符串、列表、元组)中是否包含某个值。
运算符 | 描述 | 示例 |
in | 如果在指定序列中找到值返回 True | 'a' in 'apple'-> True |
not in | 如果在指定序列中没找到值返回 True | 'b' not in 'apple'-> True |
示例:
fruits = ["apple", "banana", "cherry"] if "banana" in fruits: print("香蕉在水果列表中") if "grape" not in fruits: print("葡萄不在水果列表中") 字符串检查 message = "Hello World" if "World" in message: print("找到 World")身份运算符
身份运算符用于比较两个对象的存储单元(内存地址),即判断它们是否是同一个对象。这与 不同, 比较的是值。
运算符 | 描述 | 示例 |
is | 如果两个变量指向同一个对象返回 True | a is b |
is not | 如果两个变量指向不同对象返回 True | a is not b |
示例:
a = [1, 2, 3] b = [1, 2, 3] c = a print(a == b) True,因为值相同 print(a is b) False,因为它们是两个不同的列表对象,内存地址不同 print(a is c) True,因为 c 指向 a 的内存地址 小整数缓存机制示例 x = 256 y = 256 print(x is y) True,Python 对小整数有缓存 x = 257 y = 257 print(x is y) 可能为 False,取决于解释器实现运算符优先级
当表达式中包含多个运算符时,Python 会按照优先级顺序进行计算。优先级从高到低如下表所示(同一行优先级相同):
优先级 | 运算符 | 描述 |
1 | ** | 指数 |
2 | ~, +, - | 按位翻转,一元加号和减号 |
3 | *, /, %, // | 乘,除,取模,整除 |
4 | +, - | 加法,减法 |
5 | >>, << | 右移,左移 |
6 | & | 按位与 |
7 | ^ | 按位异或 |
8 | \| | 按位或 |
9 | in, not in, is, is not, <, <=, >, >=, !=, == | 比较,成员,身份运算符 |
10 | not | 逻辑非 |
11 | and | 逻辑与 |
12 | or | 逻辑或 |
示例:
优先级示例 result = 2 + 3 * 4 print(result) 14,因为乘法优先级高于加法 使用括号明确意图 result_with_parentheses = (2 + 3) * 4 print(result_with_parentheses) 20