Python语言支持以下类型的运算符:



  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 位运算符
  • 逻辑运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

一、算术运算符


1、+

加法运算、序列的连接、表示正数

数字直接加减运算,字符串拼接。

print(+12+12)
print("abc"+"efg")

python语言运算符优先级 python运算符优先级例题_python



## 2、-

减法运算,-表示负数

print(-12-12)

python语言运算符优先级 python运算符优先级例题_python_02



## 3、*

乘法运算、序列的复制

print(12*2)
print("abc"*2)

python语言运算符优先级 python运算符优先级例题_python_03


4、/

除法运算,精确除法

#/表示精确除法
print(12/3)
print(10/3)

python语言运算符优先级 python运算符优先级例题_python_04


5、//

除法运算,只取整数部分

#也是除法运算,但是只取整部分
print(12//3)
print(10//3)

python语言运算符优先级 python运算符优先级例题_运算符_05


6、%

取余(取模)运算,字面意思取余数

print(12%3)
print(10%3)

python语言运算符优先级 python运算符优先级例题_运算符_06


7、**

幂运算

注:当幂中有0的时候,幂指数整体为1,但是不含0的时候,正常计算!
理解:a ** n ** 0=a            a ** 1=a    (81 ** 0.5 ** 0=81 ** 1=81)
print(81 ** 0.5 ** 0)   81 #按照一般的思路,81 ** 0.5=9,然后9 ** 0=1,但是代码输出却是81!
print(81 ** 0.5 ** 1)   9
print(81 ** 0.5 ** 2)   3
print(81 ** 0.5 ** 3)   1.73 #理解为,81 ** 0.5=9,9 ** 0.5=3,3 ** 0.5=1.73

二、比较运算符



a=10
b=20
print(a==b) #比较对象a、b是否相等,相等返回True,否则返回False
print(a>=b) #比较对象a是否大于等于b,是则返回True,否则返回False
print(a<=b) #比较对象a是否小于等于b,是则返回True,否则返回False
print(a>b)  #比较对象a是否大于b,是则返回True,否则返回False
print(a<b)  #比较对象a是否小于b,是则返回True,否则返回False
print(a!=b) #比较对象a是否不等于b,是则返回True,否则返回False

python语言运算符优先级 python运算符优先级例题_python语言运算符优先级_07


三、赋值运算符



python中不支持++、--的运算



1、=

简单的赋值运算符,相当于增加了一个指针指向已经存在的内存

a =10
print(a)

python语言运算符优先级 python运算符优先级例题_python_08

2、+=



加法赋值运算符

a =10
b = 20
a += b  #相当于a = a+b
print(a)

python语言运算符优先级 python运算符优先级例题_python语言运算符优先级_09

3、- =



减法赋值运算符


a =10
b = 2
a -= b  #相当于a = a-b
print(a)

结果=8



4、*=

乘法赋值运算符

a =10
b = 2
a *= b  #相当于a = a*b
print(a)

结果=200

5、/=

除法赋值运算符

a =10
b = 2
a /= b  #相当于a = a/b
print(a)

结果=5

6、//=



整除赋值运算符


a =10
b = 2
a //= b  #相当于a = a//b
print(a)

结果=5

7、%=

取模赋值运算符



a =10
b = 2
a %= b  #相当于a = a%b
print(a)

余数=0

8、**=

幂赋值运算符

a =10
b = 2
a **= b  #相当于a = a**b
print(a)

结果=100

四、位移运算

对于有符号的数据运算,都是采用补码运算的。

对于正数来说:

  • 他的原码、反码、补码是一样的
# 60的原码:00111100
#     反码:00111100
#     补码:00111100
# 13的原码:00001101
#     反码:00001101
#     补码:00001101

对于负数来说:

  • 原码到反码:符号位不变,其他位置0变1,1变0
  • 反码到补码:符号位不变,要求末尾+1
  • 补码到反码:符号位不变,末尾-1
  • 反码到原码:符号位不变,1变0,0变
#-12的原码:10001100
#-12的反码:11110011
#-12的补码:11110100
  • 位或运算:"|",如果同一位上同为0则为0,否正为1
a=60
b=13


# 60补码:00111100 正数不变的
# 13补码:00001101
#       |:00111101
#补\反\原码:00111101-->32+16+8+4+1=61
print(a | b)
  • 与运算:"&"参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
a=60
b=13

#位与运算:&,如果同一位上同为1则为1,否正为0
# 60补码:00111100
# 13补码:00001101
#      &:00001100
#补\反\原码:00001100-->12
print(a & b)
  • 异或运算:"^",如果同一位上相同为0,不同为1
a=60
b=13


# 60补码:00111100
# 13补码:00001101
#       ^:00110001
#补\反\原码:00110001-->32+16+1=49

print(a ^ b)
  • 按位取反运算符 “~”
a=60
b=13

#取反运算:~,0变1,1变0
# 60补码:00111100
#     ~60:11000011
#最高位表示的符号位,1表示负号,0表示正号
# 补码:11000011
# 反码:11000010
# 原码:10111101
# 结果:=-(32+16+8+4+1)
print(~a)
print(~b)

结果=-61,-14

  • 左移运算符"<<"

运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0

a = 12
#  00001100(12的补码)
#  00011000(a<<1的补码、原码)
print(a<<1)#高位抛弃,低位补零

结果=24

  • 右移运算符">>"

左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

a = 12
#  00001100(12的补码)
#  00000110(a>>1的补码、原码)
print(a>>1)#低位抛弃,高位补零

结果=6

五、逻辑运算符

  1. 逻辑与运算-and

x and y:如果x是false的话,返回值就是false,否则就是y的

  1. 逻辑或运算-or

x or y:如果x是True,结果就是True,否则返回y的值

  1. 逻辑非运算-not

not x:如果x是True,则结果为False;如果x为False,则结果为True

六、成员运算符

判断某个元素是否是某个数据结构的成员

1、in 判断某个元素是某个迭代(set集合、序列、映射)类型的成员吗?

list1 = [1,2,3,4,5,6,7,8,89,9,0]
str1 = "abcdefsggg"
set1 = {'a','v','d','e'}
dict1 = {"name":"petter","gender":"male"}
print(3 in list1)    #True
print(22 in list1)   #False

2、not in

七、身份运算符

身份运算符用于比较两个对象的存储单元(其实相当于判断对象在内存的存储地址是否相同)
1、is

  • 判断某个变量与两外一个变量是同一个身份(指向的是同一个数据的存储空间)
  • is运算符就相当于是id(a)==id(b),如果引用的是同一个对象则返回 True,否则返回 False
a = 12
b = 12
c = 13
print(id(a))
print(id(b))
print(id(c))
# is运算符就相当于是id(a)==id(b),如果引用的是同一个对象则返回 True,否则返回 False
print(a is b)   #True
print(a is c)   #False

2、not is