day4:运算符
1.算术运算符:+ - * / // % **
注意点:1./ 除法,结果为小数 2.// 地板除,返回整数 3.// 如果被除数或者除数是一个小数,结果加上.0
2.比较运算符:< > <= >= == !=
注意点:1.只会产生两种结果:True和False 2.>=,<= 两个值相等,返回值也为True
3.赋值运算符:= += -= *= /= //= %= **=
注意点:1.= 是赋值,从右向左,将右侧的值赋值给左侧变量
2.a+=b---->a=a+b
4.成员运算符:in 和 not in (针对于容器型数据)
注意点:1.字符串必须是一个连续的片段
2.列表元组字典正常判断即可
3.在字典中,in和not in在字典中只判断键,不判断值
5.身份运算符:is 和 is not
注意点:1.身份运算符的作用是检测两个数据在内存当中是否是同一个值
2.判断是否同一个值请看上篇文章:判断id是否相同的部分。
6.逻辑运算符:and or not
注意点:1.逻辑与:全真则真,一假则假
2.逻辑或:全假则假,一真则真
3.逻辑非:真变假,假变真
4.逻辑短路: 如果出现了短路效果,后面的代码不执行
短路条件:(1) True or 表达式 (2) False and 表达式
5.逻辑运算符的优先级:() > not > and > or
7.位运算符: & | ^ << >> ~
1.按位与 &
2按位或 |
3.按位异或 ^ (两个值不一样,返回真,否则返回假)
4.<< 左移 :左移相当于做乘法 : a * 2的n次幂
>> 右移 :右移相当于做除法 : a // 2的n次幂
5.~ 按位非 (针对于补码进行操作,按位取反,包括符号位)
举个例子:
~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反.
var1 = ~19
print(var1)
原码:0000 ... 10011
反码:0000 ... 10011
补码:0000 ... 10011
补码: 0000 ... 10011
按位非: 1111 ... 01100
给你补码求原码:
补码: 1111 ... 01100
反码: 1000 ... 10011
原码: 1000 ... 10100 => -20
var1 = ~(-22)
print(var1)
"""
原码: 1000 ... 10011
反码: 1111 ... 01100
补码: 1111 ... 01101
补码: 1111 ... 01101
按位非: 0000 ... 10010
给你补码求原码:
正数 : 补码 = 反码 = 原码
原码: 0000 ... 10010 => 18
-------------------------------
关于运算符的总结:
(1) 个别运算符:
优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级
(2) 整体 一元运算符 > 二元运算符
一元运算符: 同一时间,只操作一个值 - ~
二元运算符: 同一时间,操作两个值 + - * / ...
(3) 同一层级
逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > |
(4) 其他运算符
算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.