0


Python, ==和is,if中判断是否相等

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

  1. ==只比较值是否相等,is比较id是否相同。
  2. 事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了,同样的道理,字符串对象也有一个类似的缓冲池,超过区间范围内自然不会相等了。 https://www.cnblogs.com/yifanrensheng/p/11865041.html
标签: python

本文转载自: https://blog.csdn.net/weixin_43231510/article/details/119371013
版权归原作者 Neo.Yang 所有, 如有侵权,请联系我们删除。

“Python, ==和is,if中判断是否相等”的评论:

还没有评论