运算符同样是在我们以前的+、-、×、÷的基础上进行一定程度的扩展。
Python中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和一些特殊的可以算为运算符类的关系表示方式。
1、算术运算符
算术运算符主要就是我们日常使用的加(+)、减(-)、乘(*)、除(/)、取余(%)、取整除 (//,表示返回商的整数部分(向下取整))、幂(**),具体看下面的例子:
>>>a = 1 #定义a赋值1
>>>b = 2 #定义b赋值2
>>>a + b #计算a+b
3
>>>a - b #计算a-b
-1
>>>a * b #计算a*b
2
>>>a / b #计算a/b
0.5
>>>a % b #计算a%b
1
>>>a // b #计算a//b
0
>>>b ** 2 #计算b的2次幂
4
在实际中,不光数字我们可以用算术运算符进行计算,对以后要学习的字符串、元组、列表也能够使用进行一些对数据的操作,如同对数字的计算一样,在以后章节我们会遇到。
2、关系运算符
关系运算顾名思义是对比两个以上的数据之间关系的内容的,具体有以下几类:等于(==),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=),比较之后会返回一个布尔型的值,如果满足条件返回True,如果不满足返回False。我们看下面例子:
>>>a = 1 #a赋值1
>>>b = 2 #b赋值2
>>>a == b #判断a是否等于b,a不等于b,返回False
False
>>>a != b #判断a是否不等于b,a不等于b,返回True
True
>>>a > b #判断a是否大于b,a不大于b,返回False
False
>>>a < b #判断a是否小于b,a小于b,返回True
True
>>>a >= b #判断a是否大于等于b,只要满足大于或者等于一个条件便返回真,a不大于等于b,返回了False
False
>>>a <= b #判断a是否小于等于b,只要满足小于或者等于一个条件便返回真,a小于等于b,返回了True
True
同样,我们也可以对字符串等其他数据类型进行比较,在以后的章节会遇到。
单独区分一下“=”与“==”的区别:
“=”是一种赋值符号,表示将右边的数据赋值给左边,我们可以把“=”比作手,把等号右侧的数据比作物品,等号左边的比作一个大箱子,“=”就相当于把右侧的物品拿起放到左侧的箱子里。
“==”是一种关系运算符,表示来确认“==”两边的数据是否一样,是否相等,如同一面镜子,如果镜子里的是一个人那就是True,如果,出了问题,镜子中的人发生了魔术般的变化,那就会照出来的不是同一个人,则返回False,当然,这面镜子不是我们生活中的镜子了。
3、逻辑运算符
逻辑运算顾名思义是对逻辑数据(或者说布尔数据)进行运算,得出布尔结论的运算符,主要有与(and)、或(or)、非(not)。我们来看例子:
>>>a = 0 #a赋值0
>>>b = 1 #b赋值1
>>>c = 2 #c赋值2
>>>c > b and b > a #and主要判断两边的数据是否为True,只有全为True才会返回True,否则返回False
True
>>>c > b and b < a #and主要判断两边的数据是否为True,只有全为True才会返回True,否则返回False
False
>>>c > b or b > a #or主要判断两边的数据是否有True,只要有True才会返回True,否则返回False
True
>>>c > b or b < a #or主要判断两边的数据是否有True,只要有True才会返回True,否则返回False
True
>>>c < b and b < a #and主要判断两边的数据是否为True,只有全为True才会返回True,否则返回False
False
>>>c < b or b < a #or主要判断两边的数据是否有True,只要有True才会返回True,否则返回False
False
>>>not a #根据not后面的数据,如果数据为False,则返回True
True
>>>not b #根据not后面的数据,如果数据为True,则返回False
False
4、位运算符
位运算符主要是对二进制数字进行运算的运算符,因此,在执行位运算时,要将数字转化成二进制数字才能使用为运算符进行运算,位运算符主要有按位与“&”,按位或”|”,按位异或“^”,按位取反“~”,左移位“<<”,右移位“>>”。
我们分别来看他们如何运算:
按位与“&”:两个二进制数,只有对应位都是1,结果才是1,否则都为0。
按位或“|”:两个二进制数,只要对应位都是0,结果才是0,否则都为1。
按位异或“^”:两个二进制数,只要对应为同时为0或者1,结果才是0,否则为1。
按位取反“~”:一个二进制数取反,1变为0,0变为1。
左移位“<<”:一个二进制数,向左移动相应的位数,溢出的高位舍弃,二进制后补充相应位数的0。
右移位“>>”:一个二进制数,向右移动相应的位数,如果最高位为0,舍弃最低位相应的位数,并在高位补充相应位数的0;如果最高位为1,舍弃最低位相应的位数,并在高位补充响应位数的1。
>>>0101&0011 #1&1为1,0&1为0,1&0为0,0&0为0
0001
>>>0101|0011 #1|1为1,0|1为1,1|0为1,0|0为0
0111
>>>0101^0011 #1^1为0,0^1为1,1^0为1,0^0为0
0110
>>>~0101 #~1为0,~0为1
1010
>>>01010011<<2 #左移后,溢出2位被舍弃,后面补0
01001100
>>>01010011>>2 #右移后,如果高位为0,则舍掉低位2位后,高位补0
00010100
>>>11010011>>2 #右移后,如果高位为1,则舍掉低位2位后,高位补1
11110100
5、运算符的优先级
优先级就相当于小学中我们学到的“先算乘除后算加减”一样,Python语言中也有相应的优先级要求,但是,我们容易记混,所以,在使用各种符号进行计算时,我们用括号“()”来调整运算顺序,这里,我们就不再单独列举优先级运算情况了。
下一节,我们将学习流程控制语句。