在掌握了怎么用Python定义变量和Python常用的数据类型后, 我们就可以继续探索Python世界了.

运算符

算术运算符

运算符 描述 实例
+ 1 + 2 => 3
- 3 - 2 => 1
* 2 * 3 => 6
/ 6 / 2 => 3
// 整除 7 // 2 => 3
% 模除 7 % 2 = 1
** 2 ** 3 = 8

关系运算符

运算符 描述 实例
== 等于 1 == 2 => False
!= 不等 3 != 2 => True
<> 不等 2 <> 3 => True
> 大于 6 > 2 => True
< 小于 7 < 2 => False
>= 大于等于 7 >= 2 = True
<= 小于等于 2 <= 3 = True

赋值运算符

运算符 描述 实例
= 赋值 x = 1
+= 加赋值 x += 1
-= 减赋值 x -= 1
*= 乘赋值 x *= 2
/= 除赋值 x /= 2
//= 整除赋值 x //= 2
%= 模除赋值 x %= 2
**= 幂赋值 x **= 3

位运算符

运算符 描述 实例
& 与运算 5 & 2
| 或运算 5 | 2
~ 取反运算 ~7
^ 异或运算 7 ^ 3
<< 左移运算 1 << 2
>> 右移运算 7 >> 1
print( 5 & 2 ) # 00000101 and 00000010 => 00000000 => 0
print( 5 | 2 ) # 00000101 or 00000010 => 00000111 => 7 
print( 7 ^ 3)  # 00000111 xor 00000011 => 00000100 => 4
print(1 << 2) # 00000001 << 2 => 00000100 => 4 
print(7 >> 1) # 00000111 >> 1 => 00000011 => 3
print(~7) # -x - 1 => -8
涉及到的一些概念
1. 源码: 是指由 0 和 1 组成的二进制数.(先低后高存储)
2. 无符号位数: 是指将源码的所有有效位数, 都用来表示数值(比如 "0000 0001" 这是一个8位的二进制数, 可以表示数的范围就是[0, 255])
3. 有符号位数: 是指用源码的第一位表示符号位(1 表示负数, 0 表示正数), 其余的位数来表示数值(比如"0000 0001" 这是一个8位的二进制数, 可以表示数的范围就是[-128, 127])
4. 原码: 是指用有符号位数表示的二进制数
5. 反码: 正数的反码是它本身, 负数的反码是除符号位外的其他位取反得到的(比如 -7的原码是 10000111, 反码就是 11111000)
6. 补码: 正数的补码是它本身, 负数的补码是在反码的基础上加 1(比如 -7 的反码是 11111000, 那补码就是 11111001)

~取反运算符, 是将数值的补码进行取反
~7 => ~(0000 0111) => 1111 1000 => 1000 0111(反码) => 1000 1000(补码) => -8
同理 ~(-8)
∵ -8 => 1000 1000(原码) => 1111 0111(反码) ==> 1111 1000(补码)
∴ ~(-8) => ~(1111 1000) => 0000 0111 => 7

逻辑运算符

运算符 描述 实例
not not True
and True and False
or True or False

成员运算符

运算符 描述 实例
in 存在 1 in range(10)
not in 不存在 1 not in range(2, 10)

身份运算符

运算符 描述 实例
is 是否相同引用 x is y
is not 是否不同引用 x is not y

运算符的优先级

运算符 描述
** 指数 (最高优先级)
~ 按位翻转
* / % // 乘, 除, 模除和整除
+ - 加法, 减法
>> << 右移,左移运算符
& 与运算
^ | 或运算符和异或运算符
<= < > >= 比较运算符
<> == != 关系运算符
= %= /= //= -= += = *= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

Striveonger
12 声望0 粉丝

Bug 一样的人生, 不需要解释.