目录
算术运算符
(图片来自B站BV1wD4y1o7AS,P19)
字符串的相乘
print('-' * 10) # 打印----------
赋值运算符
(图片来自B站 BV1wD4y1o7AS,P20)、
字符串的分解赋值
a, b, c, d = 'room' print(a) # 打印r print(b) # 打印O print(c) # 打印O print(d) # 打印m
如果变量不够字符串赋值
链式赋值
a = b = c = 100 print(a, b, c) # 打印3个100
系列解包赋值
a, b = 10, 20 print(a, b) # 打印10 20
运用系列解包赋值交换值
a, b = 10, 20 a, b = b, a print(a, b) # 打印20 10
比较运算符
成立返回True,不成立返回False
(图片来自B站BV1wD4y1o7AS,P21)
>=(<=),表示大于或等于(小于或等于),只要满足一个,就是True
逻辑运算符
(图片来自B站BV1wD4y1o7AS,P21)
print(8 > 7 and 6 > 5) # True print(8 < 7 and 10 / 0) # False
10 / 0 没有运算
因为逻辑与 and 要两个都是 True 才是 True,所以当第一个表达式的结果为 False 直接得结果,不会计算 and 右侧的表达式了
print(8 > 7 or 10 / 0) # True
逻辑或 or,当左侧的表达式结果为True时,or 的右侧表达式不执行运算符
位运算
& - 按(二进制)位与:
两个都是 1 才是 1
print('按位与运算:', 12 & 8) # 打印8 ''' 12 - 1100 8 - 1000 12 & 8 - 1000 '''
| - 按(二进制) 位或:
有一个是 1 就是 1
print(4 | 8) # 打印12 ''' 4 - 0100 8 - 1000 4 | 8 - 1100 '''
^ - 按(二进制)位异或:
两个不同才是 1,相同就是 0
print(15 ^ 9) # 打印6 ''' 15 - 1111 9 - 1001 15 ^ 9 - 0110 '''
~ - 按(二进制)位取反:
取反
print(~ 123) # 打印-124 ''' 123 - 0000 0000 0111 1011(123的补码) ~123 - 1111 1111 1000 0100(~123的补码,取反) -124 - 1000 0000 0111 1100(原码) '''
<< - 左移位运算符:
将二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用 0 补充
(图片来自B站BV1wD4y1o7AS,P23)
print(2 << 2) # 8,2* 2*2(移动2位,本身的2乘两个2) print(2 << 3) # 16,2* 2*2*2(移动3位,本身的2乘三个2) print(4 << 2) # 16,4* 2*2
>> - 右移位运算符:
将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃
左边(高位端)的空位端,如果最高位是 0 (正数),左侧空位填 0;如果最高位是 1(负数),左侧空位填1
(图片来自B站BV1wD4y1o7AS,P23)
print(8 >> 2) # 2,8 // 2 // 2(向右移动两位,除两次2) print(-8 >> 2) # -2,-8 // 2 // 2 print(12 >> 3) # 1,12 // 2 // 2 // 2 = 1.5,向小的取整 print(-12 >> 3) # -2,向小的取整
运算符的优先级:
(图片来自B站BV1wD4y1o7AS,P23)