运算符 Operator 及优先级
算数运算符
- + - * / ** %
- /表示自然除,结果是浮点数。//为整除。python2.x版本/和//都是整除。
用法举例
In [4]: 1+1 Out[4]: 2 In [5]: 2*2 Out[5]: 4 # 自然除 In [8]: 10 / 3 Out[8]: 3.3333333333333335 # 整除,向下圆整 In [9]: 10 // 3 Out[9]: 3 In [14]: -10 // 3 Out[14]: -4 # 取模,公式 x % y等价 x- ((x // y) * y) In [10]: 10 % 3 Out[10]: 1 In [11]: -10 % 3 Out[11]: 2 In [13]: -10 % -3 Out[13]: -1
幂预算(由于乘方运算比求负(单目减)的优先级高,所以-3**2等价 -(3**2))
In [15]: 3 **2 Out[15]: 9 In [16]: -3**2 Out[16]: -9 In [17]: (-3)**2 Out[17]: 9
位运算符
- & | ~ ^ << >>
- << 和 >> 的运算:乘除2的整数倍。例如:16>>2 相当于 16//2**2 , 4<<2 相当于4*2**2
&位与
In [32]: 2 & 3 Out[32]: 2 In [35]: -2 & -3 Out[35]: -4
原理:计算中的数据都是以补码的形式存在的,据说稳定
-3 源:10000011 反:11111100 补:11111101 -2 源:10000010 反:11111101 补:11111110 位与:补码相同位保留,不同位为0,然后取补码的源码 补:11111100 补码取反:10000011 末位加1:10000100
~取反
In [36]: ~2 Out[36]: -3
^异或
相同位取零,不同为相加
In [42]: 3 ^5 Out[42]: 6 In [43]: 3 ^ 2 Out[43]: 1
|位或
相当于取并集
In [46]: 8|5 Out[46]: 13 In [47]: 3|2 Out[47]: 3
>>和<<
In [48]: 8 >>1 Out[48]: 4 In [49]: 8 >>2 Out[49]: 2 In [50]: 8 <<2 Out[50]: 32 In [51]: 8 <<1 Out[51]: 16
比较运算符
- == != > < >= <= 返回boolean值
- 链式比较操作 4>x >=2
逻辑运算符
- 与 或 非 and or not
- 短路:
- and 如果第一个表达式为False,后面不用计算了,都为False,可以将and看作是做“乘法运算“。
- or 如果第一个表达式返回True,后面不用计算了,都为True,可以将or看作是做“加法运算”。
赋值运算符
- 等号:a = 5
- += -= *= /= %=
- x = y = z = 1
成员运算符
- in、not in
身份运算符
- is、 is not
运算符优先级(由高到低)
运算符 | 描述 |
'expr' | 字符串转换 |
{key:expr,...} | 字典 |
[expr1,expr2...] | 列表 |
(expr1,expr2,...) | 元组 |
function(expr,expr2,...) | 函数调用 |
x[start:stop:step] | 切片 |
x[index] | 下标索引取值 |
x.attribute | 属性引用 |
~x | 按位取反 |
+x, -x | 正,负 |
x**y | 幂 |
x*y, x/y, x%y |
乘,除,取模 |
x+y, x-y |
加,减 |
x << y, x>>y | 位移 |
x&y | 按位与 |
x^y | 按位异或 |
x|y | 按位或 |
x < y, x <= y, x==y, x!=y, x>=y, x>y |
比较 |
x is y, x is not y | 等同测试 |
x in y, x not in y | 成员判断 |
not x | 逻辑否 |
x and y | 逻辑与 |
x or y | 逻辑或 |
lambda arg,....:expr | Lambda匿名函数 |
优先级:算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
逻辑与或和按位与或的区别:
1、相似点:
逻辑与和按位与的执行结果是一样的;逻辑或和按位或的执行结果也是一样的。
2、不同点:
逻辑与和逻辑或执行时,只需要判断第一个条件的真假就能得出整个条件的真假,不需要判断第二个条件;
按位与和按位或执行时,需要判断第一个条件的真假就能得出整个条件的真假,但是还需要对后面的条件进行判断,并且最后把这些条件的结果结合起来才返回 整个条件的真假。
由此看来,逻辑与或的执行效率比按位与或的效率高。
单目运算符 > 双目运算符 > 三目运算符 (其中:三目运算符 > 双目运算符中的赋值运算)
目数就是变量的个数
posted on 2019-10-14 15:14 hopeless-dream 阅读(289) 评论(0) 编辑 收藏 举报