python运算符优先级

符号

描述

( )

小括号

[::]

索引运算符

x.attr

属性访问

**

幂运算符

~

按位取反

+ -

正号, 负号

* / // %

乘, 除, 整除, 取余

+ -

加, 减

>> <<

位右移, 位左移

&

按位与

^

按位抑或

|

按位或

== != > >= < <=

等于, 不等于, 大于, 大于等于, 小于, 小于等于

is is not

is运算符

in not in

存在运算符

not

逻辑非

and

逻辑与

or

逻辑或

,

逗号运算符

加, 减, 乘, 除, 取余, 常规运算

+ - * / % 运算与其他语言一样, 多了复数类型的加减乘除运算
+

# 数字类相加, 自动类型转换
print(type(23 + 3 + 5j)) # <class 'complex'>
print(type(23 + 3.3)) # <class 'float'>
加号运算符同时也是序列类型拼接符
# 序列类型相加, 自动合并序列
# 注意, 相加的两个序列必须是相同的类型, 字典+字典, 元祖+元祖, 列表+列表
a = (4, "aa")
b = (12, 6.4)
print(a + b) # (4, 'aa', 12, 6.4)
print(type(a + b)) # <class 'tuple'>
乘法运算符同时也是序列类型复制符
a = [12, 3.5, "hello"]
print(a * 2) # [12, 3.5, 'hello', 12, 3.5, 'hello']
b = ("abc", 12, 5.8)
print(b * 2) # ('abc', 12, 5.8, 'abc', 12, 5.8)
c = "abc"
print(c * 3) # abcabcabc

整除运算符 //

//

a = 5
b = 3
print(a // b) # 1

幂运算符 **

**

a = 5
b = 3
print(a ** b) # 125

比较运算符

> < >= <= == !=
与其他语言不同的是, python的比较运算符可以级联使用
省去了逻辑与逻辑或的操作

a = 5
b = 3
c = 2
print(a > b > c) # True
print(a == b == c) # False
print(a >= b >= c) # True
print(a <= b <= c) # False
print(a != b != c) # True

逻辑运算符

要注意python中没有 ! 运算符, 也没有&& 和 || 运算符
它们被替换为not, and, 和 or

a = True
b = False
c = 2
print( a and b) # False
print( a or b ) # True
print( not a ) # False

位运算符

& | ^ ~ >> <<
位运算与C语言基本一致
取反有些不同,原数取反后得到的是结果数的补码, 要求结果数, 需要三步走, 如原数为101, 取反运算后得到结果数补码010

  1. 结果数补码取反得到101
  2. 取反后加1得到110
  3. 补充原数符号位为结果数符号位 -101 所以~5 = -6
a = 0b1101
b = 0b1011
print("{:b}".format(a & b)) # 1001
print("{:b}".format(a | b)) # 1111
print("{:b}".format(a ^ b)) # 110
print("{:b}".format( ~a )) # -1110 取反运算三步走
print("{:b}".format(a >> 2)) # 11 右移不会补充符号位, 而是补充0
print("{:b}".format(a << 2)) # 110100 左移补充0

成员运算符

in not in 对容器类数据类型有效

a = "helloo"
b = tuple(a)
c = list(a)
d = {"h":1, "e": 2, "l": 3, "l": 4, "o": 5}
print("he" in a) # True
print("he" in b) # False
print("h" in b) # True
print("e" in c) # True
print("o" in d) # True
print(5 in d) # False

赋值运算符

注意点:

  1. 赋值符号支持多个变量同时赋值
  2. += -= *= /= &= |= ^= 这些都只是普通赋值, 不支持多变量赋值
a, b = 2, 3
print(a, b)