一、算术运算符
算术运算符就是我们平常所说的加减乘除,但是Python里的算术运算符不仅仅只有这四个,还有取余运算、整除运算、乘方(幂)运算。【1】print(1/3)的输出结果为0.3333333333333333,print(2/1)的输出结果为2.0
【2】2**0.5的意思是2的0.5次方,就是二次根号下2,math模块里面表示为sqrt(2)
【3】print(-3//2)的输出结果为-2(向下取整),而不是-1(向零取整)
【4】print(-2.5%2)的输出结果为1.5,其计算过程为向下取余得到-1.5,取绝对值得到1.5
二、比较运算符
比较运算符,顾名思义,就是用来比较两个对象的,一般用在循环语句中的循环终止判断条件或者在if-elif-else语句中,返回值是一个【1】布尔值。【1】有些时候返回值True和False会被视为1和0,如print([1,2][1>2])的输出结果为1
【2】在一定范围内,整型与浮点型值相同用==去比较会输出True,但当值比较大的时候会输出False,这是由浮点数不准确导致的,print(1e+23 == 100000000000000000000000)输出的结果为False(顺便一提,科学计数法表示的是浮点数),print(1==1.0)输出True
三、赋值运算符
赋值运算符是给一个变量进行赋值时使用的,【1】赋值的方式有很多种,而且在Python3.8版本中还新增加了一种运算符——海象运算符。为什么叫它海象运算符呢?因为它横起来看就像一只海象的眼睛和长长的牙齿。【1】赋值运算符还可以与位运算结合,即&=、|=、^=、~=、>>=、<<=
【2】下面的两段代码等价,但是上面的代码效率更高,代码量也更少!
if a:=1 : print('Yes')#'Yes'
a = 1 if a : print('Yes')#'Yes'
四、位运算符
位运算符或许听起来很神秘,看起来或许很难理解,其实吧,只要静下心来细细研读,还是可以弄明白的。位运算也没什么特定,就两点,一是比较难懂,二是运算速度快!为什么位运算符的名字这么奇怪嘞?‘位’是个什么意思呢?位运算是对数字的一种的运算,其本质是将十进制数字转化为二进制数字进行操作,这里涉及计算机的原理了,所以位运算非常快。所谓的‘位’就是二进制01数字串中0和1的位置的变化,具体看下表。
【1】具体解释请参考这篇博客:Python学习中的“按位取反”笔记总结 - 逝水经年 - 博客园
【这里添加一些详细示例,供大家理解】
a = 25 #二进制为 0001 1001 b = 36 #二进制为 0010 0100 print(a&b) #0 #按位与运算 ==> 0000 0000 (0的二进制) print(a|b) #61 #按位或运算 ==> 0011 1101 (61的二进制) print(a^b) #61 #按位异或运算 ==> 0011 1101 (61的二进制) print(a<<2) #100 #左移运算 ==> 0110 0100 (100的二进制) print(a>>2) #6 #右移运算 ==> 0000 0110 (6的二进制) print(~a) #-26 #按位取反运算 ==> 1 0001 1010 (-26的二进制) print(~-a) #24 #按位取反运算 ==> 0 0001 1000 ( 24的二进制) #注:最左边单独的一位数字是符号位,1为负,0为正
五、逻辑运算符
逻辑运算符与我们在数学里面学的‘且’‘或’‘非’十分类似,【1】返回值一般为布尔值。【1】当操作对象是具体的数字的时候返回值是具体的数,and若第一个数判断为False则返回第一个数,否则为第二个数(无论第二个数的True与False),or若第一个数判断为True则返回第一个数,否则为第二个数(无论第二个数的True与False)如print(1 and 0)输出结果为0
【2】print(not(1 and 0))的输出结果为True,(1 and 0)是用括号括起来了,算是一个整体
六、成员运算符
所谓成员运算符,就是判断一个元素是否在一个【1】序列中。
七、身份运算符
身份运算符用于【1】比较两个对象的存储单元(是否引用自同一个对象),而不是简单地比较两个对象的类型或值!不同的运算符有不同的优先级,这就好比我们在数学中学到的,乘方运算的优先级大于乘除法,乘除法的优先级大于加减法,有括号的先算括号里的,这三点在Python的运算符优先级规则里也是相同的,但在这之外,Python运算符优先级规则里还有一些规则,毕竟Python的运算符的数量还不少,不过还是建议在优先级不清晰的时候打上括号,便于阅读和理解。
九、特别注意
这里会指出一些需要我们特别注意的地方。