Python 运算符及优先级

本文主要总结下Python的运算符,以及运算符的优先级。

算术运算符

算术运算符有: +(加)-(减)*(乘)/(除)%(取模)**(幂)//(取整除)

>>> 3 + 2
5
>>> 6 - 3
3
>>> 3 * 2
6
>>> 3 / 2    # Py2中,整数相除,结果只保留整数。
1
>>> 3 / 2.0    # Py2中,被除数or除数有一个浮点型,结果为浮点型。
1.5
>>> 5 % 3
2
>>> 3 ** 2
9
>>> 3 // 2
1
>>> 3 // 2.0
1.0

比较(关系)运算符

比较运算符有: =(等于)!=(不等于)<>(不等于)>(大于)<(小于)>=(大于等于)<=(小于等于)

>>> 3 == 2
False
>>> 3 != 2
True
>>> 3 <> 2    # Py3中,已废弃<>运算符
True
>>> 3 > 2
True
>>> 3 < 2
False
>>> 3 >= 2
True
>>> 3 <= 2
False

赋值运算符

赋值运算符只有=,其它类似+=*=实际是赋值表达式,如 a += 1等价于a = a + 1

>>> x = 3
>>> print(x)
3
>>> x += 2
>>> print(x)
5
>>> x -= 2
>>> print(x)
3
>>> x *= 2
>>> print(x)
6
>>> x /= 2.0
>>> print(x)
3.0
>>> x %= 2
>>> print(x)
1.0
>>> x **= 2
>>> print(x)
1.0
>>> x //= 2
>>> print(x)
0.0

逻辑运算符

逻辑运算符有: and(与)or(或)not(非)

x and y : 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
x or y : 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not x: 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

>>> False and 1
False
>>> 1 and False
False
>>> 3 and 2
2
>>> 2 and 3
3
>>> 1 or 0
1
>>> 0 or 1
1
>>> 3 or 2
3
>>> 2 or 3
2
>>> not 1
False
>>> not 0
True

位运算符

位运算符有: &(按位与)|(按位或)^(按位异或)~(按位取反)<<(按位左移)>>(按位右移)

位运算符是把数字看作二进制来进行计算的

>>> x,y = 21,26
>>> bin(x)
'0b10101'
>>> bin(y)
'0b11010'
>>> bin(x & y)
'0b10000'
>>> bin(x | y)
'0b11111'
>>> x ^ y
15
>>> bin(x ^ y)
'0b1111'
>>> ~x
-22
>>> bin(~x)
'-0b10110'
>>> x << 2
84
>>> bin(x << 2)
'0b1010100'
>>> y >> 2
6
>>> bin(y >> 2)
'0b110'

成员运算符

成员运算符有: innot in

>>> 3 in (20,8,11,2)
False
>>> 2 in (20,8,11,2)
True
>>> 3 not in (20,8,11,2)
True
>>> 2 not in (20,8,11,2)
False

身份运算符

成员运算符有: isis not

>>> x,y = 3,2
>>> id(x)
43553064
>>> id(y)
43553088
>>> x is y
False
>>> x is not y
True
>>> z = 3
>>> id(z)
43553064
>>> x is z
True
>>> y is z
False

运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 按位与
^ | 按位异或、按位或
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

参考资料:
运算符及优先级
Python基础:数值(布尔型、整型、长整型、浮点型、复数)