python 运算符
算术运算符
+ :加法运算符,用于将两个数相加。
a = 5
b = 3
result = a + b
print(result) # 输出: 8
- :减法运算符,用于将右操作数从左操作数中减去。
a = 5
b = 3
result = a - b
print(result) # 输出: 2
* :乘法运算符,用于将两个数相乘。
a = 5
b = 3
result = a * b
print(result) # 输出: 15
/ :除法运算符,用于将左边操作数除以右边操作数。结果始终是浮点数。
a = 5
b = 3
result = a / b
print(result) # 输出: 1.6666666666666667
// :整除运算符,用于将左边操作数除以右边操作数,然后向下取整到最接近的整数。
a = 5
b = 3
result = a // b
print(result) # 输出: 1
% :取模运算符,返回左边操作数除以右边操作数的余数。
a = 5
b = 3
result = a % b
print(result) # 输出: 2
** :幂运算符,计算乘方。
a = 5
b = 3
result = a ** b
print(result) # 输出: 125
位运算符
按位与(&):将两个数的对应位都为1时,结果位为1,否则为0。当整数和1进行按位与运算时,只有整数的最低位和1的最低位都为1时,结果为1;否则结果为0。这种操作常用于判断一个整数的最低位是否为1,即判断一个整数是奇数还是偶数。
a = 10 # 0b1010
b = 12 # 0b1100
c = a & b # 0b1000,十进制为 8
按位或(|):将两个数的对应位只要有一个为1时,结果位为1,否则为0。
a = 10 # 0b1010
b = 12 # 0b1100
c = a | b # 0b1110,十进制为 14
按位取反(~):对数的二进制进行取反操作。即 0 变为 1,1 变为 0。
a = 10 # 0b1010
b = 12 # 0b1100
result_not_a = ~a # 十进制为 -11(以补码表示 0b1111 0101)> (反码表示 0b1111 0101 - 1 = 0b1111 0100) > (原码表示 0b1000 1011)
result_not_b = ~b # 十进制为 -13(以补码表示 0b1111 0011)> (反码表示 0b1111 0011 - 1 = 0b1111 0010) > (原码表示 0b1000 1101)
按位异或(^):将两个数的对应位不相同时,结果位为1,相同时为0。
a = 10 # 0b1010
b = 12 # 0b1100
c = a ^ b # 0b0110,十进制为 6
左移位(<<):将一个数的二进制表示向左移动指定的位数。右侧用零填充。
a = 10 # 0b1010
c = a << 2 # 0b101000,十进制为 40
右移位(>>):将一个数的二进制表示向右移动指定的位数。对于正数左侧用零填充,对于负数用符号位填充。
b = 12 # 0b1100
c = b >> 2 # 0b11,十进制为 3
比较运算符
比较运算符用于比较两个值之间的关系,并返回一个布尔值(True 或 False)。
==:等于,用于判断两个值是否相等。
x = 5
y = 5
result = x == y
print(result) # 输出: True
!=:不等于,用于判断两个值是否不相等。
x = 5
y = 5
result = x != y
print(result) # 输出: False
>:大于,用于判断左边的值是否大于右边的值。
x = 5
y = 5
result = x > y
print(result) # 输出: False
<:小于,用于判断左边的值是否小于右边的值。
x = 5
y = 5
result = x < y
print(result) # 输出: False
>=:大于等于,用于判断左边的值是否大于或等于右边的值。
x = 5
y = 5
result = x >= y
print(result) # 输出: True
<=:小于等于,用于判断左边的值是否小于或等于右边的值。
x = 5
y = 5
result = x <= y
print(result) # 输出: True
逻辑运算符
逻辑运算符用于对多个逻辑表达式进行组合和判断,返回一个布尔值(True 或 False)。
and:逻辑与,当两个条件都为真时,结果为真。
x = 5
y = 10
result = (x > 0) and (y < 15)
print(result) # 输出: True
| A | B | A and B |
|-------|-------|---------|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
or:逻辑或,当两个条件中至少一个为真时,结果为真。
x = 5
y = 10
result = (x < 0) or (y < 15)
print(result) # 输出: True
| A | B | A or B |
|-------|-------|---------|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
not:逻辑非,用于取反操作,将真变为假,假变为真。
x = 5
y = 10
result = not (x > 0)
print(result) # 输出: False
| A | not A |
|-------|-------|
| True | False |
| False | True |
赋值运算符
=:将等号右侧的值赋给等号左侧的变量。
x = 10
print(x) # 输出: 10
+=:加法赋值运算符,将等号左侧的变量与等号右侧的值相加,并将结果赋给等号左侧的变量。
x = 10
x += 5 # 相当于 x = x + 5
print(x) # 输出: 15
-=:减法赋值运算符,将等号左侧的变量减去等号右侧的值,并将结果赋给等号左侧的变量。
x = 15
x -= 3 # 相当于 x = x - 3
print(x) # 输出: 12
*=:乘法赋值运算符,将等号左侧的变量乘以等号右侧的值,并将结果赋给等号左侧的变量。
x = 12
x *= 2 # 相当于 x = x * 2
print(x) # 输出: 24
/=:除法赋值运算符,将等号左侧的变量除以等号右侧的值,并将结果赋给等号左侧的变量。
x = 24
x /= 4 # 相当于 x = x / 4
print(x) # 输出: 6.0
%=:取模赋值运算符,将等号左侧的变量对等号右侧的值取模,并将结果赋给等号左侧的变量。
x = 6.0
x %= 4 # 相当于 x = x % 4
print(x) # 输出: 2.0
**=:幂赋值运算符,将等号左侧的变量的值求幂等号右侧的值,并将结果赋给等号左侧的变量。
x = 2.0
x **= 3 # 相当于 x = x ** 3
print(x) # 输出: 8.0
//=:整除赋值运算符,将等号左侧的变量整除等号右侧的值,并将结果赋给等号左侧的变量。
x = 8.0
x //= 3 # 相当于 x = x // 3
print(x) # 输出: 2.0
成员运算符
成员运算符用于检查一个值是否存在于一个序列(如列表、元组、集合、字符串等)中。
in:如果在指定序列中找到值返回 True,否则返回 False。
my_list = [1, 2, 3, 4, 5]
result = 3 in my_list
print(result) # 输出: True
not in:如果在指定序列中找不到值返回 True,否则返回 False。
my_list = [1, 2, 3, 4, 5]
result = 6 not in my_list
print(result) # 输出: True
身份运算符
身份运算符用于比较两个对象的内存地址是否相同,即判断它们是否指向同一个对象。
is:如果两个对象具有相同的内存地址,则返回 True,否则返回 False。
x = [1, 2, 3]
y = x
result = x is y
print(result) # 输出: True
is not:如果两个对象具有不同的内存地址,则返回 True,否则返回 False。
x = [1, 2, 3]
z = [1, 2, 3]
result = x is not z
print(result) # 输出: True
原码
正数的原码就是其二进制表示形式,最高位为符号位,0 表示正数,1 表示负数。
正数 5 的原码: 0 000 0101
负数 -5 的原码:1 000 0101 (最高位为1)
反码
正数的反码与原码相同,负数的反码是符号位不变,其余位取反。
正数 5 的反码: 0 000 0101(与原码相同,因为正数的反码和原码相同)
负数 -5 的反码:1 111 1010 (负数 -5 的反码是将其原码除符号位外的其他位取反得到的)
补码
整数的补码与原码相同,负数的补码是反码+1
正数 5 的补码: 0 000 0101(与原码相同,因为正数的补码和原码相同)
负数 -5 的反码:1 111 1010
负数 -5 的补码:1 111 1010 + 1 = 1 111 1011
负数表示
负数在计算机中使用补码存储,-1的补码为1111 1111
-1 的正码: 1000 0001
-1 的反码: 1111 1110
-1 的补码: 1111 1110 + 1 = 1111 1111
运算符优先级
运算符 |
描述 |
---|---|
|
绑定或加圆括号的表达式,列表显示,字典显示,集合显示 |
|
抽取,切片,调用,属性引用 |
await 表达式 |
|
|
乘方 [5] |
|
正,负,按位非 NOT |
|
乘,矩阵乘,除,整除,取余 [6] |
|
加和减 |
|
移位 |
|
按位与 AND |
|
按位异或 XOR |
|
按位或 OR |
比较运算,包括成员检测和标识号检测 |
|
布尔逻辑非 NOT |
|
布尔逻辑与 AND |
|
布尔逻辑或 OR |
|
|
条件表达式 |
lambda 表达式 |
|
|
赋值表达式 |
参考文档
https://docs.python.org/zh-cn/3.12/reference/expressions.html#/