Python 运算符

算数运算符

a = 10, b = 20

运算符 释义 示例
+ a + b = 30
- a - b = -10
* a * b = 200
/ b / a = 2
% 余数 b % a = 0
// b // a = 2
** a ** b (10的20次方)

注意
+ 两边都是数值的时候表示运算
+ 有字符串的时候表示连接符('s' + 3 = 's3')
* 有字符串的时候表示重复字符串次数('s' * 3 = 'sss')
/ 被除数不能为零

赋值运算符

a = 10, b = 20

运算符 释义 示例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 余数赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 商赋值运算符 c //= a 等效于 c = c // a

关系(比较)运算符

返回Bool类型,True or False
a = 10, b = 20

运算符 释义 示例
== 等于 - 比较两个对象是否相等 (a==b)False
!= 不等于 - 比较两个对象是否不相等 (a!=b)True
> 大于 (a>b)False
< 小于 (a<b)True
>= 大于等于 (a>=b)False
<= 小于等于 (a<=b)True

逻辑运算符

a = 10, b = 20

运算符 逻辑表达式 描述 示例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回20
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。 (a or b) 返回10
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

进制

二进制: 0-1
八进制:0-7
十进制:0-9
十六进制:0-9-a-f
计算机二进制运算:正数负数的二进制第一位为符号位0正数1负数
原码:正数二进制
反码:0>1 ,1>0
补码:反码+1
负数:计算机所有负数都用补码表示
-3的二进制
1.找3的二进制码: 0000 0011
2.求第一步的反码:1111 1100
3.反码+1为补码:1111 1101
普通进制转换
二进制转十进制:byte1*2**0 + byte2*2**1 +byte3*2**2 + 。。。
十进制转二进制:除2求倒余数
二进制转八进制:byte1*8**0 + byte2*8**1 +byte3*8**2 + 。。。
八进制转二进制:155(八进制)》 一位变三位(变成二进制)》1》001, 5 》101,5 》101,合并 01101101得到结果
十六进制转二进制类似八进制转二进制,一位变三位
其余情况,与十进制转换就是除进制求倒余数。
python进制转换
二进制表示方式:a = 0b01001011 (0b开头)
八进制表示方式:a = 0o113 (0o开头)
十进制表示方式:a = 75
十六进制表示方式:a = 0x4b (0x开头)
转二进制:bin() | 转八进制:oct() | 转十进制:int() | 转十六进制:hex()
注意:int(字符串,base=2) 转十进制 字符串对应后面的base, 0b01001011 对应2 int(0o113, base=8),这样才不会报错。

位运算符

二进制数据运算
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

运算符 描述 示例
& 位与:相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 位或 :相应位存在1,则该位的结果为1,全为0才为0 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 位异或: 对应位相同为0不同为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 位取反: 1变0,0变1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<< 位左移:高位丢弃,低位补0 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 位右移:低位丢弃,高位正数补0负数补1 a >> 2 输出结果 15 ,二进制解释: 0000 1111

右移快速运算:(x // 2**n) 数除以2的右移位数 取整(56>>3 = 56//2**3)
左移快速运算:(x * 2**n) 数乘以2的左移位数 取整(2<<3 = 2*2**3)

成员运算符

运算符 释义
in 如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。

身份运算符

身份运算符用于比较两个对象的内存地址是否相同

运算符 释义
is is 是判断两个标识符是不是id相同
not is is not 是判断两个标识符是不是id 不相同

is 与 == 区别
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。

三目运算符

a+b if a>b else a-b | 结果1 if 条件 else 结果2

运算符优先级

以下表格列出了从最高到最低优先级的所有运算符,()可改变优先级。

运算符 释义
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 位右移,左移
& 位与
^ | 位异或、位或
<= < > >= 比较运算符
== != 等于不等于
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
not and or 逻辑运算符
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容