一、算术运算符
+、-、*、/(整数部分+小数部分)、//(只保留整数部分)、%(结果只取余数部分)、**(次方运算)
3**2 = 9 3//2 = 1
3/2 = 1.5 3%2 = 1
二、赋值运算符
=、+=、-=、*=、/=、//=、%=、**=
c=1的意思是把1赋值给变量c,而不是定义一个变量c,因为Python中变量是没有定义的
三、关系运算符(也叫比较运算符)
==、!=、>、<、>=、<=
关系运算符返回的是一个布尔值
b=1
b+=b>=1
print(b)
运行结果:
2
注:不只是数字才能做比较运算
print('a'>'b')
print('abc'>'abd')
print([1,2,3]<=[2,3,4])
print((1,2,4)>(2,5))
运行结果:
False
False
True
False
字符比较的是ASCII码,字符串、列表、元组会将元素一个一个进行比较
四、逻辑运算符
and(且/与)、or(或)、not(非)
逻辑运算符是对布尔类型进行操作,返回的值也是一个布尔值
int、float:0被认为是False,非0被认为是True
str:空字符串被认为是False,非空的字符串被认为是True
list:空列表被认为是False,非空的列表被认为是True
tupel:空元组被认为是False,非空的元组被认为是True
set:空集合被认为是False,非空的集合被认为是True
dict:空字典被认为是False,非空的字典被认为是True
and 和 or 比较的两个非布尔类型的值,如果第一个值能决定结果则返回的是第一个值,反之返回第二个值
'a' and 0 = 0
'a' or 0 = 'a'
0 or 2 = 2
not 'a' = False
五、成员运算符
in、not in
意义:1.一个元素是否在一组元素内
2.返回的结果是一个布尔类型
in:判断是否在
not in:判断是否不在
a=1
print(a in [2,3,4])
b=3
print(b in (2,3,4))
c=1
print(c in {'a':1})
运行结果:
False
True
False
注:判断一个元素是否在字典中,默认比较的是字典的key值,而调用字典的values()方法后,比较的才是value
c=1
print(c in {'a':1})
print(c in {'a':1}.values())
运行结果:
False
True
六、身份运算符
6.1 is、is not
返回的是一个布尔值
关系运算符==和!=比较的是两个类型的值
is比较的是身份是否相等,也可以认为比较的是内存地址是否相等
d = {1,2,3}
e = {2,1,3}
print(d==e)
print(d is e)
print(id(d))
print(id(e))
print('=================================')
f = (1,2,3)
g = (2,1,3)
print(f==g)
print(f is g)
print(id(f))
print(id(g))
运行结果:
True
False
4461715976
4467147048
=================================
False
False
4467159616
4467161488
因为集合是无序的,所以d==e,元组是有序的,所以f!=g
6.2类型的判断
对象的三个特征:值==,身份 is,类型type( )==
判断类型建议使用isinstance方法,因为type不能判断一个类型的子类是否是某一类型,isinstance方法则可以
isinstance(a,类型):判断a是不是一个类型
isinstance(a,(元组中添加多个类型)):判断a是不是多个类型中的其中之一
a = 'a'
print(type(a) == str)
print(isinstance(a, str))
print(isinstance(a, int))
print(isinstance(a, (int, bool, str)))
运行结果:
True
True
False
True
七、位运算符
&(按位与)
|(按位或)
^(按位异或)
~(按位取反)
<<(左移动)
>>(右移动)
位运算符是把数字当作二进制进行运算
a=2
b=3
print(a&b)
print(a|b)
print(3<<2)
运行结果:
2
3
12