05 Python运算符
Python运算符:
此图来源于菜鸟教程,更详细参考
http://www.runoob.com/python3/python3-basic-operators.html
说明:
同一优先级的通常从左至右计算(赋值运算符是右至左)
如果想要改变它们的计算顺序,得使用圆括号
**:幂运算,可进行开方运算
~:按位非(取反)
一个简单的公式: – (a + 1)
原理:① 将a = 5,用原码表示:00000101
在计算机中,数值的存储一律用补码,正数的原码就是补码
② 取反操作~,0变1,1变0,为:11111010
取反后,为负数的存储形式,最高位为1,补码(负数要想存储在内存中,要经过取反,加1的操作,最后成为补码)
③ 减1,为:11111001
进行相反操作,减1
④ 取反,为:10000110
符号位不用变
⑤ 输出,为:-6
① 将a = -6,用原码表示:100000110
② 取反,为:11111001,反码
③ 加1,为:11111010,补码
-6内存中的存储形式
④ 取反操作~,为:00000101
取反后,已经是一个正数的存储形式,正数的补码与原码一样,所以无须进行减一和取反。
⑤ 输出,为:5
算术运算符:
*、/、//、%、+、-、
Note:
floor除法,x // y
整除(返回一个不大于x / y的值(向下圆整)),有一个为float,结果为float
求模运算符 x % y,最后结果的符号与y有关,有一个为float,结果为float
<<、>>: 左移,最高位不变,每移一位,结果为,原值 * 2 ** n (n为移动的位数)
右移,最高位不变,每移一位,结果为,原值 / 2 ** n (n为移动的位数)
&:都为1即为1,否则为0
^:相同即为1,否则为0
|:有一个为1即为1,否则为0
比较运算符:
>、>=、<、<=、==、!=
Note:Python2,!=和<>都可以用;
Python3,只用!=
身份运算符:
is,is not
意思:判断两个标识符是否引用的同一个对象,返回True和False
实际上就是判断他们的id,id(a) == id(b)
成员运算符:
in,not in
意思:判断指定成员是否在序列中,返回True和False
in, x in iterable意思为:如果x在iterable里面,就返回True,否则,返回False
not in, x not in iterable意思为:如果x不在iterable里面,就返回True,否则,返回False
逻辑运算符:
not,and,or
not,and,or同时出现,先算(),再not,再and,再or
not,真即假,假即真;
and,都为真即真;
or,有一个为真即真
Note:and和or,返回的是真或假的表达式