python == 与 is区别

刷到一个面试题 python中 == 与 is 的区别

根据以往的经验,这个问题应该考察的是运算符根据地址 还是值进行比较的

复制代码
s1 = ['a']
s2 = ['a']
s3 = s1
print(s1 == s2)  # True  值相等
print(s1 == s3)  # True  值相等
print(s1 is s2)  # False 值相等,引用地址不相等
print(s1 is s3)  # True  值相等,引用地址相等

根据上面的情况,得到的结论:

  • ==:值相等性判断
  • is:判断两个标识符是不是引用自一个对象,x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False

再看个例子

复制代码
>>> str1='sten_waves'
>>> str2='sten_waves'
>>> str1 is str2
True

先说一下前面的结论是对的,这个例子中str1和str2的地址是相同的,原因是内存驻留机制,可以参考:Python中的字符串驻留机制_在python中,任意长的字符串都遵守驻留机制。-CSDN博客

相关推荐
集成显卡2 分钟前
AI取名大师 | PM2 部署 Bun.js 应用及配置 Let‘s Encrypt 免费 HTTPS 证书
开发语言·javascript·人工智能
AI小云8 分钟前
【Numpy数据运算】数组间运算
开发语言·python·numpy
q***783724 分钟前
【玩转全栈】----Django制作部门管理页面
后端·python·django
是苏浙35 分钟前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
CoderIsArt36 分钟前
抽象语法树AST与python的Demo实现
python
纵有疾風起43 分钟前
C++—vector:vecor使用及模拟实现
开发语言·c++·经验分享·开源·stl·vector
任子菲阳1 小时前
学Java第四十三天——Map双列集合
java·开发语言
wearegogog1231 小时前
基于MATLAB的谷物颗粒计数方法
开发语言·matlab
Jackson@ML1 小时前
360度看C#编程语言
开发语言·c#
我命由我123452 小时前
CesiumJS 案例 P35:添加图片图层(添加图片数据)
开发语言·前端·javascript·css·html·html5·js