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

运算符优先级

运算符

描述

(expressions...),

[expressions...]{key: value...}{expressions...}

绑定或加圆括号的表达式,列表显示,字典显示,集合显示

x[index]x[index:index]x(arguments...)x.attribute

抽取,切片,调用,属性引用

await x

await 表达式

**

乘方 [5]

+x-x~x

正,负,按位非 NOT

*@///%

乘,矩阵乘,除,整除,取余 [6]

+-

加和减

<<>>

移位

&

按位与 AND

^

按位异或 XOR

|

按位或 OR

innot inisis not<<=>>=!===

比较运算,包括成员检测和标识号检测

not x

布尔逻辑非 NOT

and

布尔逻辑与 AND

or

布尔逻辑或 OR

if -- else

条件表达式

lambda

lambda 表达式

:=

赋值表达式

参考文档

https://docs.python.org/zh-cn/3.12/reference/expressions.html#/

posted @ 2024-03-18 18:02  小吉猫  阅读(16)  评论(0编辑  收藏  举报