0702Python总结-运算符

一.算数运算符 + - * / // % **

/ 除法 (结果为小数)
// 地板除 (返回整数)
如果被除数或者除数是一个小数,结果加上.0

 % 取余
res = 11 % 4
res = -11 % 4  # -3 + 4 = 1
res = 11 % -4  # 3 + (-4) = -1
res = -11 % -4 # -3(如果被除数和除数都是负数,在正常得到的结果前面填上负号即可.)
print(res)

二.比较运算符 > < >= <= == !=

比较运算符只会差生两种结果:True 真的 ,False 假的

三.赋值运算符: = += -= *= /= //= %= **=

= 从右向左,将右侧的值赋值给左侧变量

四.成员运算符: in 和 not in (针对于容器型数据)

字符串必须是一个连续的片段 
strvar = "雷霆嘎巴,无情哈拉少"
res = "雷" in strvar
res = "文" not in strvar
res = "无情" in strvar
res = "霆哈少" in strvar
res = ',' not in strvar
print(res)
in  和 not in 在字典中只判断键,不判断值

五.身份运算符:is 和 is not (检测两个数据在内存当中是否是同一个值)

遵循变量缓存机制

六.逻辑运算符: and or not

and 逻辑与:全真则真,一假则假
or 逻辑或:全假则假,一真则真
not 逻辑非:真变假,假变真
逻辑短路: 如果出现了短路效果,后面的代码不执行
短路:
(1) True or 表达式
(2) False and 表达式
bool 类型为假的十种情况
0 0.0 0j False ‘’ [] () {} set() None
先用大脑算一下布尔值真假,是否出现短路情况
如果出现了直接返回当前值,没出现,继续向右执行
逻辑运算符的优先级
() > not > and > or

七.位运算符 & | ^ << >> ~

按位与 &

var1 = 19
var2 = 15
print(var1 & var2)
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 00011 => 3

按位或 |

var1 = 19
var2 = 15
print(var1 | var2)
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 11111 => 31

按位异或 ^ 两个值不一样,返回真,否则返回假

var1 = 19
var2 = 15
print(var1 ^ var2)
19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 11100 => 28

<< 左移

 左移相当于做乘法: 5 * 2的n次幂 
res = 5 << 1 # 10
res = 5 << 2 # 20
res = 5 << 3 # 40
print(res)
0000. ...  101
0000 ... 1010  移动一位 10
0000 ..10100  移动二位 20

>>右移

右移相当于做除法 : 5 // 2的n次幂 
res = 5 >> 1 # 2
res = 5 >> 2 # 1
res = 5 >> 3 # 0
print(res)
0000 ...  101
0000 ...  010  移动一位 2
0000 ...  001  移动二位 1
0000 ...  000  移动三位 0

按位非~ (针对于补码进行操作,按位取反,包括符号位)

公式: -(n+1)
var1 = ~19
print(var1)
~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反.

原码:0000 ... 10011
反码:0000 ... 10011
补码:0000 ... 10011

补码:     0000 ... 10011
按位非:   1111 ... 01100

给你补码求原码:
补码: 1111 ... 01100
反码: 1000 ... 10011
原码: 1000 ... 10100 => -20

var1 = ~(-19)
print(var1)
原码: 1000 ... 10011
反码: 1111 ... 01100
补码: 1111 ... 01101

补码:    1111 ... 01101
按位非:  0000 ... 10010

给你补码求原码:
正数 : 补码 = 反码 = 原码

原码:  0000 ... 10010 => 18

八.运算符总结:

1.个别运算符:

优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级

2.整体 一元运算符 > 二元运算符

一元运算符: 同一时间,只操作一个值 - ~
二元运算符: 同一时间,操作两个值 + - * / …

3. 同一层级

逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > |

4. 其他运算符

算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.

res = 5+5 << 6//3 is 40 and True
print(res)
res = 10 << 2 is 40 and True
res = 40 is 40 and True
res = True and True
res = True

加上括号包起来,让别人能看懂代码;
res = (5+5) << (6//3) is 40 and True

你可能感兴趣的:(培训,python)