Python 基本运算符
Python 基本运算符
Section titled “Python 基本运算符”运算符是 Python 中执行操作的特殊符号或关键字。这些值称为操作数(operands)。
例如,在表达式 4 + 5 中,+ 是运算符(operator),而 4 和 5 是操作数。该表达式的值为 9。
运算符的类型
Section titled “运算符的类型”Python 支持多种类型的运算符:
- 算术运算符 (Arithmetic Operators)
- 比较(关系)运算符 (Comparison (Relational) Operators)
- 赋值运算符 (Assignment Operators)
- 逻辑运算符 (Logical Operators)
- 位运算符 (Bitwise Operators)
- 成员运算符 (Membership Operators)
- 身份运算符 (Identity Operators)
让我们来探讨每种类型。
Python 算术运算符
Section titled “Python 算术运算符”这些运算符执行标准的数学计算。假设 a = 10 且 b = 20。
| 运算符 | 描述 | 示例 (a=10, b=20) |
|---|---|---|
+ 加法 | 对操作数的值进行相加。 | a + b 的结果是 30 |
- 减法 | 从左操作数中减去右操作数。 | a - b 的结果是 -10 |
* 乘法 | 对操作数的值进行相乘。 | a * b 的结果是 200 |
/ 除法 | 用左操作数除以右操作数。结果始终是浮点数(float)。 | b / a 的结果是 2.0 |
% 取模 | 返回除法的余数。 | b % a 的结果是 0。13 % a 的结果是 3。 |
** 幂运算 | 左操作数求右操作数次幂。 | a ** 2 的结果是 100 (10 的 2 次幂) |
// 整除 | 执行除法并向下取整到最接近的整数。 | 9 // 2 的结果是 4。9.0 // 2.0 的结果是 4.0。 |
Python 比较运算符
Section titled “Python 比较运算符”这些运算符比较两个值,并返回布尔值(True 或 False)结果。它们也称为关系运算符。假设 a = 10 且 b = 20。
| 运算符 | 描述 | 示例 (a=10, b=20) |
|---|---|---|
== 等于 | 如果两个操作数相等,则返回 True。 | a == b 为 False。a == 10 为 True。 |
!= 不等于 | 如果操作数不相等,则返回 True。 | a != b 为 True。a != 10 为 False。 |
> 大于 | 如果左操作数大于右操作数,则返回 True。 | a > b 为 False。 |
< 小于 | 如果左操作数小于右操作数,则返回 True。 | a < b 为 True。 |
>= 大于或等于 | 如果左操作数大于或等于右操作数,则返回 True。 | a >= b 为 False。a >= 10 为 True。 |
<= 小于或等于 | 如果左操作数小于或等于右操作数,则返回 True。 | a <= b 为 True。a <= 10 为 True。 |
注意:运算符 <> 在 Python 3 中已弃用;请改用 !=。
Python 赋值运算符
Section titled “Python 赋值运算符”这些运算符用于给变量赋值,通常结合了算术运算和赋值操作。假设初始时 a = 10,b = 20,且 c = 0。
| 运算符 | 描述 | 示例 (a=10) |
|---|---|---|
= 赋值 | 将右操作数的值赋给左操作数。 | c = a + b 将 30 赋给 c。 |
+= 加并赋值 | 将右操作数加到左操作数上,并将结果赋回给左操作数。 | c += a 等价于 c = c + a。如果 c 最初是 0,c 会变为 10。 |
-= 减并赋值 | 从左操作数中减去右操作数,并将结果赋给左操作数。 | c -= a 等价于 c = c - a。 |
*= 乘并赋值 | 将左操作数乘以右操作数,并将结果赋给左操作数。 | c *= a 等价于 c = c * a。 |
/= 除并赋值 | 将左操作数除以右操作数,并将结果(浮点数)赋给左操作数。 | c /= a 等价于 c = c / a。 |
%= 取模并赋值 | 执行取模运算,并将结果赋给左操作数。 | c %= a 等价于 c = c % a。 |
**= 幂并赋值 | 左操作数求右操作数次幂,并将结果赋给左操作数。 | c **= a 等价于 c = c ** a。 |
//= 整除并赋值 | 执行整除运算,并将结果赋给左操作数。 | c //= a 等价于 c = c // a。 |
Python 位运算符
Section titled “Python 位运算符”位运算符将操作数视为二进制位序列(比特)进行操作。它们常用于低级别操作或优化。假设 a = 60 且 b = 13。
二进制表示:
`a = 60 -> 0011 1100``b = 13 -> 0000 1101`| 运算符 | 描述 | 示例 (a=60, b=13) |
|---|---|---|
& 按位与 | 如果两个对应的位都是 1,则将该位设置为 1。 | a & b 的结果是 12 (0000 1100) |
| 按位或 | 如果对应的位中至少有一个是 1,则将该位设置为 1。 | a | b 的结果是 61 (0011 1101) |
^ 按位异或 | 如果对应的位中只有一个是 1,则将该位设置为 1。 | a ^ b 的结果是 49 (0011 0001) |
~ 按位取反(补码) | 反转所有位(0 变 1,1 变 0)。应用于一个操作数。结果取决于数字表示方式(例如,带符号整数的补码)。 | ~a 的结果是 -61。在典型的补码系统中,对于正整数,结果是 -(a + 1)。 |
<< 左移 | 将左操作数的位向左移动由右操作数指定的位数。从右侧填充零。 | a << 2 的结果是 240 (1111 0000) |
>> 右移 | 将左操作数的位向右移动由右操作数指定的位数。从左侧填充符号位(算术右移)或零(逻辑右移 - Python 执行算术右移)。 | a >> 2 的结果是 15 (0000 1111) |
Python 逻辑运算符
Section titled “Python 逻辑运算符”这些运算符用于组合条件语句。假设 x = True 且 y = False。
| 运算符 | 描述 | 示例 (x=True, y=False) |
|---|---|---|
and 逻辑与 | 如果两个操作数都为真(True),则返回 True。 | x and y 的结果为 False。 |
or 逻辑或 | 如果至少一个操作数为真(True),则返回 True。 | x or y 的结果为 True。 |
not 逻辑非 | 如果操作数为假(False),则返回 True;如果操作数为真(True),则返回 False。 | not x 的结果为 False。not y 的结果为 True。 |
Python 成员运算符
Section titled “Python 成员运算符”这些运算符测试序列(如字符串、列表、元组、集合、字典键)是否包含特定项。假设 my_list = [1, 2, 3]。
| 运算符 | 描述 | 示例 (my_list=[1, 2, 3]) |
|---|---|---|
in | 如果值/变量在序列中找到,则返回 True。 | 2 in my_list 的结果为 True。 |
not in | 如果值/变量未在序列中找到,则返回 True。 | 4 not in my_list 的结果为 True。 |
Python 身份运算符
Section titled “Python 身份运算符”这些运算符比较两个对象的内存位置,检查它们是否引用完全相同的对象实例。假设 x = [1, 2],y = [1, 2],z = x。
| 运算符 | 描述 | 示例 (x=[1,2], y=[1,2], z=x) |
|---|---|---|
is | 如果两个变量指向内存中的同一个对象,则返回 True。 | x is z 的结果为 True(z 引用与 x 相同的列表对象)。x is y 的结果为 False(x 和 y 是不同的列表对象,即使它们的内容相同)。 |
is not | 如果两个变量指向内存中的不同对象,则返回 True。 | x is not y 的结果为 True。x is not z 的结果为 False。 |
注意:is 用于身份比较(是否是同一个对象),== 用于相等性比较(值是否相同)。
Python 运算符优先级
Section titled “Python 运算符优先级”当一个表达式包含多个运算符时,Python 会根据优先级以特定的顺序进行评估。优先级较高的运算符会先被评估。可以使用括号 () 来覆盖默认优先级。
下表列出了从最高优先级(顶部)到最低优先级(底部)的运算符:
| 运算符 | 描述 |
|---|---|
() | 括号(分组) |
f(args...), x[index], x[index:slice], x.attribute | 函数调用、下标 ([])、切片 ([:])、属性引用 (.attribute) |
await x | await x 等待表达式 |
** | ** 幂运算(右结合) |
+x, -x, ~x | +x, -x, ~x 正号、负号、按位取反(一元运算符) |
*, /, //, % | *, /, //, % 乘法、除法、整除、取模 |
+, - | +, - 加法和减法 |
<<, >> | <<, >> 位左移和右移 |
& | & 按位与 |
^ | ^ 按位异或 |
| | | 按位或 |
in, not in, is, is not, <, <=, >, >=, !=, == | in, not in, is, is not, <, <=, >, >=, !=, == 比较运算符,包括成员测试和身份测试 |
not x | not x 逻辑非 |
and | and 逻辑与 |
or | or 逻辑或 |
if else | if else 条件表达式 |
lambda | lambda Lambda 表达式 |
:= | := 赋值表达式(海象运算符) |
理解运算符优先级有助于编写可预测且正确的代码。