发布时间:2019-07-29 10:28:41编辑:auto阅读(1909)
==比较的是两个对象的值是否相等,比较常用a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) #True
is比较的是两个对象是不是同一个实例对象,它们的内存地址是否相同a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) #False
b = a
print(a is b) #True
in是判断是否包含,即判断一个集合(如list、tuple)是否包含这个元素,a in a是False是因为[1, 2, 3]这个列表并不在[1, 2, 3]这个列表中,[1, 2, 3]这个列表包含的元素只有1, 2, 3a = [1, 2, 3]
print(1 in a) #True
print(a in a) #False
==而很少见到is,那么什么时候使用is呢?当在变量和单例值之间比较时,用is 的效率更高。目前最常使用is 的地方是判断对象是否为None。is的效率更高是因为它不能进行函数重载,不用进行特殊的函数调用,直接比较两个对象的id;而==则调用了对象的__eq__()方法,继承自object的对象的__eq__()方法直接比较两个对象的id,这结果与is一样,但大多数时候继承object的类会覆盖__eq__()方法,因此比较的就是对象的值了,效率也降低了。a = [1, 2, 3]
b = [1, 2, 3]
print(id(a)) #139889039143432
print(id(b)) #139889039117576
print(a is b) #False
print(a == b) #True
a = 21
b = 21
print(a is b) #True
a = "python3.7"
b = "python3.7"
print(a is b) #True
False。但这仅是在命令行中执行得到的结果,如果在Pycharm或保存为文件执行,就没有这个范围的限制,因为解释器做了一部分优化命令行
>>> a = -6
>>> b = -6
>>> a is b
False
>>> a = 257
>>> b = 257
>>> a is b
False
保存为文件执行
a = -6
b = -6
print(a is b) #True
a = 257
b = 257
print(a is b) #True
上一篇: Python3入门经典100例
下一篇: python3基础:文件操作
51272
50713
41317
38129
32591
29499
28351
23214
23184
21507
1584°
2304°
1912°
1853°
2173°
1896°
2587°
4324°
4176°
2980°