一、算术运算符

+、-、*、/(整数部分+小数部分)、//(只保留整数部分)、%(结果只取余数部分)、**(次方运算)

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