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博客

相关推荐
兩尛17 分钟前
c++知识点5
开发语言·c++
澈20720 分钟前
C++内存管理:new/delete与内存泄漏实战
开发语言·c++·内存分区
༒࿈南林࿈༒21 分钟前
刺猬猫小说下载
python·js逆向
其实防守也摸鱼25 分钟前
VS code怎么使用 Conda 安装预编译包
开发语言·网络·c++·vscode·安全·web安全·conda
.柒宇.25 分钟前
AI-Agent入门实战-AI私厨
人工智能·python·langchain·agent·fastapi
默子昂27 分钟前
langchain 基本使用
开发语言·python·langchain
SilentSamsara29 分钟前
生成器实战:处理大文件、流水线模式与无限序列
vscode·python·青少年编程·pycharm
yaoxin52112329 分钟前
402. Java 文件操作基础 - 读取二进制文件
java·开发语言·python
Hello.Reader34 分钟前
ds4.c 深度解析为 DeepSeek V4 Flash 打造的本地推理引擎
c语言·开发语言
TopGames1 小时前
〖Unity GPU粒子插件〗ParticleSystem的终极性能优化方案 十倍百倍的显著提升 现有特效转GPU粒子 高性能特效方案
java·开发语言