运算优先级
同一个等级是没有先后顺序的,此外,赋值语言的先后问题:
赋值的顺序从上往下,同一行一般都是代表同时进行赋值,如图所示:
一.and
A and B,若A,B有任意一个为假(0,None,空值),则返回假,若全假则返回A。如果全为真,则返回B
1.if判断中 (0、0.0,''、[]、()、{}、None、False) and 任何数等于假
>>> {} and [1] {} >>> None and [1] >>> '' and '111' '' >>> 0 and 10 0 >>> () and 10.0 () >>> 0.0 and 2 0.0 >>> set() and {1,2} set() |
2.如果and左右两边都是假,则返回左边的
>>> {} and set() {} | >>> 0 and [] and 12 0 |
3.如果and左右两边都是真,则返回右边的
>>> True and 2 2 | >>> 2 and True True | >>> 3 and 4 and 5 5 |
二.or
A or B,若A,B有任意一个为真(只要不为0,None,空值),则返回真,若全真则返回A。如果全为假,则返回B
1.有真返回真
>>> 0 or 3 3 >>> 3 or 0 3 | >>> "True" if 3 or 0 else "False" 'True' >>> "True" if [] or 0.1 else "False" 'True' |
2.全真返回左边的值
>>> 4 or 5 4 | >>> [1] or (1) [1] |
3.全假返回右边的值
>>> None or 0.0 0.0 | >>> () or [] [] |
三.not
1.not (0、''、[]、()、{}、None、False) 返回True
2.not (≥1的数字,True,[1,],(1,),{1,}....) 返回False
四.&
& : 全奇为1,有一个位偶数则为0;若两个数相等则为本身 可用于进位运算
如:1&3=1 1&3=1
2&4=0 1&4=0 2&1=0
3&3=3
总结:1.当&两边相等,返回相等值
- 有偶为0,全奇为1
五.>>(右移)和<<(左移)位运算符
>>> 3<<2 12 >>> 3<<3 24 >>> 3>>2 0 >>> 10>>2 2 | --先把3转为二进制11,再把二进制向左移2为变为1100,把二进制1100转为十进制12输出。 --0b11--0b11000--24 --0b11--0b--0 --0b1010--0b10--2 |