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 分钟前
JavaScript Object Function ERROR
开发语言·javascript·ecmascript·error
AI_Claude_code8 分钟前
ZLibrary访问困境方案二:DNS-over-HTTPS/TLS配置与隐私保护实践
爬虫·python·网络协议·http·网络安全·https·网络爬虫
Shadow(⊙o⊙)9 分钟前
C语言学习中需要的额外函数
c语言·开发语言·学习
还是大剑师兰特10 分钟前
pinia-plugin-persistedstate详解与Vue3使用示例
开发语言·javascript·ecmascript
方便面不加香菜12 分钟前
C++ 类和对象(二)
开发语言·c++
至此流年莫相忘12 分钟前
数据库迁移工具——Alembic
python
@大迁世界13 分钟前
20.“可复用组件”具体指的是什么?如何设计与产出这类组件?.
开发语言·前端·javascript·ecmascript
有味道的男人14 分钟前
电商效率翻倍:用 Open Claw 对接 1688 接口,快速实现图片选品 + 货源监控
java·开发语言·数据库
froginwe1114 分钟前
Chart.js 雷达图:深入解析与实际应用
开发语言