学习参考链接:https://www.runoob.com/python/python-operators.html
1.数值运算符
//加
>>> 'hello'+' world'
'hello world'
//减
>>> 3 - 1
2
//乘
>>> [1,2]*3
[1, 2, 1, 2, 1, 2]
//除
>>> 3 / 2
1.5
>>> 3 // 2
1
//取余
>>> 5%2
1
//求平方
>>> 5**2
25
//求4次方
>>> 2**4
16
2.赋值运算符
先做运算再赋值
>>> c = 1
>>> c = c+1
>>> print(c)
2
>>> c += 2
>>> print(c)
4
注意:python里没有c++,c--这种自增、自减运算符
3.关系(比较)运算符
bool,字符串,数字都可以比较
>>> 1==1
True
>>> 1>=1
True
>>> 1>1
False
>>> a = 1
>>> b = 2
>>> a != b
True
>>> a == b
False
>>> a <= b
True
4.不止数字可以做比较运算
>>> 'a'>'b'
False
>>> ord('a')
97
>>> ord('b')
98
//字符串比较,从左到右一个字符一个字符的比,只要有第一个能比出大小,就是整个字符串的大小
>>> 'abc' > 'abd'
False
>>> 'abc' < 'azb'
True
//多个元素的字符串没有asc码
>>> ord('abc')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
ord('abc')
TypeError: ord() expected a character, but string of length 3 found
//列表,元组,集合都可以进行比较
>>> [1,2,3] < [2,3,4]
True
>>> (1,2,3) < (1,3,2)
True
>>> {1,2,3} > {2,1,3}
False
5.逻辑运算符
主要用于操作bool类型,返回结果也是bool类型
and 与
or 或
not 非
>>> True and False
False
>>> True or False
True
>>> not False
True
>>> not True
False
>>> not not False
False
非bool类型与bool类型有转换关系,所以也会出现'a' and 'b'这种现象
对应关系:
int类型 0被认为是False,非0被认为是True
str类型 空字符串认为是False,非空被认为是True
list类型 []认为是False,非空list被认为是True
>>> not 1
False
>>> not ''
True
>>> not ' '
False
>>> not '0'
False
>>> not []
True
>>> not [0]
False
//and运算符,计算机要读完第二个元素才能知道结果,因此两个True的情况下,返回后边那个
>>> 1 and 2
2
>>> 'a' and 'b'
'b'
>>> 'b' and 'a'
'a'
//or运算符,计算机知道第一个是True了,就不用读第二个就知道结果是True了,因此返回前边那个
>>> 'a' or 'b'
'a'
>>> 'b' or 'a'
'b'
>>> 1 or 0
1
>>> 0 or 1
1
>>> not 'a'
False
>>> [1] or []
[1]
//返回值不一定是第一个元素,主要关注结果是True还是False,这样就好理解了
>>> [] or [1]
[1]
6.成员运算符
特点:用于判断一个元素是否在另外的一组元素中,返回值是bool类型
>>> a = 1
>>> a in [1,2,3,4]
True
>>> b = 5
>>> b in [1,2,3,4]
False
>>> b not in [1,2,3,4]
True
针对字典类型,计算机是按照key来判断in和not in的
>>> b = 'a'
>>> b in {'c':1}
False
>>> b = 1
>>> b in {'c':1}
False
>>> b = 'c'
>>> b in {'c':1}
True
7.身份运算符
>>> a = 1
>>> b = 2
>>> a is b
False
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = 'hello'
>>> b = 'world'
>>> a is b
False
>>> c = 'hello'
>>> a is c
True
如果两个变量取值相等,则is返回True
思考一个问题:is 和 == 有什么区别
>>> a = 1
>>> b = 1.0
>>> a == b
True
>>> a is b
False
==比较的是两个变量的值
is比较的是两个变量的身份(内存地址)是否相同
//可以看到,变量a和变量b的数值相等,但是它们的id不相等
>>> id(a)
1578722480
>>> id(b)
54772368
8.如何判断变量的值、身份和类型
如何判断值、身份
>>> a = {1,2,3}
>>> b = {2,1,3}
>>> a == b
True
>>> a is b
False
>>> c = (1,2,3)
>>> d = (2,1,3)
>>> c == d
False
>>> c is d
False
>>> id(a)
54754400
>>> id(b)
6459440
>>> id(c)
6379320
>>> id(d)
44923960
如何判断类型
>>> a = 'abc'
>>> isinstance(a,str)
True
>>> isinstance(a,int)
False
>>> isinstance(a,(int,str,list))
True
>>> isinstance(a,(int,list))
False
不要用type(a)== str这种方法来判断,因为不能判断子类的类型,而isinstance可以,后续会讲到
>>> a = 'abc'
>>> type(a) == str
True
>>> b = 1
>>> type(b) == int
True
9.位运算符
把数字当做二进制数进行运算
&………………按位与
|…………………按位或
^………………按位异或
~………………按位取反
<<………………左移动
>>………………右移动
举例如下:
>>> a = 2
>>> b = 3
>>> a & b
2
2转换为2进制……1 0
3转换为2进制……1 1
按位进行比较…… 1 0
二进制的10得到的十进制数就是2,故a&b得到的结果是2
10.运算符的优先级
>>> a = 1
>>> b = 2
>>> c = 3
>>> a or b and c
1
or 和 and同时在时,and运算符优先级更高
算术运算符 > 比较运算符 > 逻辑运算符
逻辑运算符中 not > and > or
推荐采用(),使优先级更加清晰
网友评论