1. 算术运算符
算术运算符用于执行基本数学运算,包括加、减、乘、除和取模等。
在 Python 中,算术运算符包括:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1 + 1 输出结果为 2 |
- | 减 | 1 - 1 输出结果为 0 |
* | 乘 | 2 * 2 输出结果为 4 |
/ | 除 | 10 / 2 输出结果为 5 |
// | 整除 | 9 // 4 输出结果为 2 |
% | 取余(取模) | 9 % 4 输出结果为 1 |
** | 幂指数 | 2 ** 4 输出结果为 16,即2的4次方,2 * 2 * 2 * 2 |
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9 |
例:
num1 = 20
num2 = 6
num3 = 5
# 四则运算 + - * /
print(f'加:{num1 + num2}')
print(f'减:{num1 - num2}')
print(f'乘:{num1 * num2}')
print(f'除:{num1 / num2}')
# 1 整除
print(f'整除:{num1 // num2}')
# 2 求余数
print(f'余数:{num1 % num2}')
# 3 幂指数
print(f'幂指数:{num2 ** 3}')
# 4 圆括号
print(f'优先级:{(num1 + num2) * num3}')
2. 赋值运算符
2.1 = 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值 | 将=右侧的结果赋值给等号左侧的变量 |
把某个值赋值给某个变量
num = 10
多个变量同时进行赋值操作
n = 5
f = 10.88
s = 'hello world'
简写为:
n, f, s = 5, 10.88, 'hello world'
print(n)
print(f)
print(s)
多个变量赋予相同的值
a = 10
b = 10
简写为:
a = b = 10
2.2 复合赋值运算符
复合赋值运算符的计算顺序 = 先执行算术运算符,执行完毕后,把结果再赋值给左边的变量。
例:
i = 1
# 相加并赋值,先加1,然后把结果赋值给左边的变量
i += 1
print(f'更新后,i的值为:{i}')
num1 = 9
# 取模并赋值,先求余数,然后在把结果赋值给左边的变量
num1 %= 2
print(f'更新后,num1的值为:{num1}')
num2 = 2
# 幂指数并赋值,先求幂指数,然后把结果赋值给左边的变量
num2 **= 3
print(f'更新后,num2的值为:{num2}')
3. 比较运算符
比较运算符用于比较两个值的大小,并返回一个布尔值。
在 Python 中,比较运算符包括:
例:
a = 5
b = 3
print(a == b) # 输出:False
print(a != b) # 输出:True
print(a > b) # 输出:True
print(a < b) # 输出:False
print(a >= b) # 输出:True
print(a <= b) # 输出:False
4. 逻辑运算符
Python中常用的逻辑运算符有三种:and、or、not。
例:
a = 1
b = 2
c = 3
print((a > b) and (b > c)) # False
print((a > b) or (b > c)) # False
print((a < b) or (b > c)) # True
print(not (a > b)) # True
说明:
-
and 运算符只有在两个操作数都为 True 时结果为 True,否则为 False;
-
or 运算符只要有一个操作数为 True 就返回 True;
-
not 运算符则是对操作数取反,如果操作数为 True 则返回 False,否则返回 True。
5. 位运算符
Python 位运算符是对二进制数进行操作的运算符,位运算符是按位进行计算的,即按照二进制位进行操作。
Python 支持的位运算符有:
-
按位与(&)
-
按位或(|)
-
按位异或(^)
-
取反(~)
-
左移(<<)
-
右移(>>)
其中:
-
按位与(&):对两个数的二进制位进行与操作,只有当两个对应位都为 1 时,结果为 1,否则为 0。
-
按位或(|):对两个数的二进制位进行或操作,只要两个对应位中有一个为 1,结果为 1,否则为 0。
-
按位异或(^):对两个数的二进制位进行异或操作,当两个对应位不同时,结果为 1,否则为 0。
-
取反(~):对一个数的二进制位进行取反操作,将 0 变成 1,将 1 变成 0。
-
左移(<<):将一个数的二进制位左移动指定的位数,左移的结果等同于将这个数乘以 $2$ 的左移次幂。
-
右移(>>):将一个数的二进制位右移动指定的位数,右移的结果等同于将这个数除以 $2$ 的右移次幂。
例如:
a = 0b1010 # 十进制数为 10
b = 0b1100 # 十进制数为 12
# 按位与
print(a & b) # 输出为 0b1000,即十进制数 8
# 按位或
print(a | b) # 输出为 0b1110,即十进制数 14
# 按位异或
print(a ^ b) # 输出为 0b0110,即十进制数 6
# 取反
print(~a) # 输出为 -11
# 左移
print(a << 1) # 输出为 0b10100,即十进制数 20
# 右移
print(b >> 1) # 输出为 0b110,即十进制数 6
在实际开发中,位运算符常常被用来进行二进制数的操作,例如,可以使用位运算符进行位掩码操作,也可以用来判断一个数的奇偶性等。
6. 运算符的优先级
-
不要把一个表达式写得过于复杂,如果一个表达式过于复杂,尝试把它拆分来书写。
-
不要过于依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用
()
来控制表达式的执行顺序。
7. 短路运算
在Python代码中,逻辑运算符的运算,要遵循短路运算原则。
表达式1 and 表达式2
说明:
-
如果表达式1为真,则最终的运算结果由右边的表达式2来决定。
-
如果表达式1条件为假,则最终结果为假,其右边的表达式2不需要在进行运算。
表达式1 or 表达式2
-
如果表达式1为真,则最终的运算结果由表达式1来决定,为真,表达式2不需要在进行运算。
-
如果表达式1为假,则最终结果由表达式2来决定,如果表达式2为真,则最终结果为真;如果表达式2为假,则最终结果为假。
在逻辑运算中,不一定逻辑运算符的两边都是纯表达式,也可以是数值类型的数据或字符串类型的数据。
print(3 and 4 and 5) # 5
print(5 and 6 or 7) # 6
4 > 3 and print('hello world') # 输出hello world
说明:
-
Python把0、空字符串和None看成 False,其他数值和非空字符串都看成 True。
-
在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
print(3 and 4) # 4
print(0 and 1) # 0
-
在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。 所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。