运算符
在 Python 中,运算符用于执行各种操作,如数学计算、比较和逻辑运算。Python 提供了多种运算符,分为几类:
- 算术运算符:用于基本的数学运算。
- 比较运算符:用于比较两个值。
- 逻辑运算符:用于执行逻辑操作。
- 位运算符:用于对整数进行位级操作。
- 赋值运算符:用于将值赋给变量并进行操作。
- 身份运算符:用于比较对象的内存地址。
- 成员运算符:用于检查值是否在序列中。
1. 算术运算符
用于执行基本的数学操作。
加法 (
+
):pythona = 5 + 3 # 结果是 8
减法 (
-
):pythona = 5 - 3 # 结果是 2
乘法 (
*
):pythona = 5 * 3 # 结果是 15
除法 (
/
):pythona = 5 / 3 # 结果是 1.6666...
整数除法 (
//
): 返回商的整数部分pythona = 5 // 3 # 结果是 1
取模 (
%
): 返回除法的余数pythona = 5 % 3 # 结果是 2
幂运算 (
**
):pythona = 5 ** 3 # 结果是 125
2. 比较运算符
用于比较两个值,并返回布尔值 (True
或 False
)。
等于 (
==
):pythona = (5 == 3) # 结果是 False
不等于 (
!=
):pythona = (5 != 3) # 结果是 True
大于 (
>
):pythona = (5 > 3) # 结果是 True
小于 (
<
):pythona = (5 < 3) # 结果是 False
大于等于 (
>=
):pythona = (5 >= 3) # 结果是 True
小于等于 (
<=
):pythona = (5 <= 3) # 结果是 False
3. 逻辑运算符
用于执行逻辑操作,通常与布尔值配合使用。
与 (
and
): 如果两个操作数都为True
,结果为True
pythona = (5 > 3) and (8 > 6) # 结果是 True
或 (
or
): 如果任意一个操作数为True
,结果为True
pythona = (5 > 3) or (8 < 6) # 结果是 True
非 (
not
): 对操作数取反pythona = not (5 > 3) # 结果是 False
4. 位运算符
用于对整数进行位级别的操作。
按位与 (
&
):pythona = 5 & 3 # 结果是 1(0101 & 0011 = 0001)
&
按位与,对应位数都是1,结果位数才是1,否则为0。按位或 (
|
):pythona = 5 | 3 # 结果是 7(0101 | 0011 = 0111)
|
按位或,对应位数都是0,结果位数才是0,否则为1。按位异或 (
^
):pythona = 5 ^ 3 # 结果是 6(0101 ^ 0011 = 0110)
按位取反 (
~
):pythona = ~5 # 结果是 -6(按位取反,负数是补码表示)
左移 (
<<
):pythona = 5 << 1 # 结果是 10(0101 << 1 = 1010)
<<
左移位运算符,高位溢出舍弃,低位补0。右移 (
>>
):pythona = 5 >> 1 # 结果是 2(0101 >> 1 = 0010)
>>
右移位运算符,低位溢出舍弃,高位补0。
5. 赋值运算符
用于将值赋给变量,并可进行操作。
赋值 (
=
):pythona = 5
加法赋值 (
+=
):pythona = 5 a += 3 # 相当于 a = a + 3,结果是 8
减法赋值 (
-=
):pythona = 5 a -= 3 # 相当于 a = a - 3,结果是 2
乘法赋值 (
*=
):pythona = 5 a *= 3 # 相当于 a = a * 3,结果是 15
除法赋值 (
/=
):pythona = 5 a /= 3 # 相当于 a = a / 3,结果是 1.6666...
取模赋值 (
%=
):pythona = 5 a %= 3 # 相当于 a = a % 3,结果是 2
幂运算赋值 (
**=
):pythona = 5 a **= 3 # 相当于 a = a ** 3,结果是 125
在 Python 中赋值运算符使用 =
,执行顺序从右到左执行。
- 支持链式赋值比如:
a = b = c = 1
; - 也支持参数赋值比如:
+=
、-=
、-=
、/=
、//=
、%=
; - 还支持解构赋值比如:
a, b, c = 10, 20, 30
。
a = b = c = 10 # 链式调用,变量指向相同的内存地址
d, e, f = 10, 20, 30 # 解构赋值,变量指向各自的内存地址
6. 身份运算符
用于比较对象的内存地址是否相同。
is
: 判断两个对象是否引用自同一个内存位置。pythona = [1, 2, 3] b = a c = [1, 2, 3] print(a is b) # True print(a is c) # False
is not
: 判断两个对象是否引用自不同的内存位置。pythona = [1, 2, 3] b = [1, 2, 3] print(a is not b) # True
7. 成员运算符
用于检查一个值是否是某个序列(如列表、字符串、元组等)的成员。
in
: 判断值是否在序列中。pythona = [1, 2, 3] print(2 in a) # True
not in
: 判断值是否不在序列中。pythona = [1, 2, 3] print(4 not in a) # True
运算符的优先级
一般情况,有括号先计算括号里的运算,再计算算术运算符,再算位运算,再算比较运算符,再算算布尔运算,最后算赋值。
括号
-> 算术运算符
-> 位运算符
-> 比较运算符
-> 逻辑运算符
-> 赋值运算符
result = 5 + 3 * 2 # 结果是 11,因为乘法优先于加法
result = (5 + 3) * 2 # 结果是 16,因为括号内的加法优先于乘法