Python中对象有三个基本要素:id,type,value
先说结论:
== :判断对象的内容是否相等
is : 判断对象的来源是否相等
问题复现:
paragraph ='bob hit a ball'
b ='hit'
words = paragraph.split()for word in words:if word is b:print(word,'This word is hit')
这样写不会返回结果
原因
is是判断是否来自同一来源
paragraph ='bob hit a ball'
b ='hit'
words = paragraph.split()for word in words:print(id(word),id(b))<--------------------
output:
2184644967472 2184644966960
2184644967536 2184644966960
2184644843504 2184644966960
2184644967600 2184644966960
修改后
paragraph ='bob hit a ball'
b ='hit'
words = paragraph.split()for word in words:if word == b:<---------------------------print(word,'This word is hit')
output:
hit This word is hit
- ==只比较值是否相等,is比较id是否相同。
- 事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了,同样的道理,字符串对象也有一个类似的缓冲池,超过区间范围内自然不会相等了。 https://www.cnblogs.com/yifanrensheng/p/11865041.html
版权归原作者 Neo.Yang 所有, 如有侵权,请联系我们删除。