is和==的关系

Python中is和==的关系

is判断两个变量是不是指的是同一个内存地址,也就是通过id()函数判断

==判断两个变量的值是不是相同

python 复制代码
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
print(id(a))		# 2298268712768
print(id(b))		# 2298269716992
print(a is b)		# False
print(a == b)		# True

这里有一种特殊情况:

python 复制代码
a = 1
b = 1
print(id(a))	# 140705217569576
print(id(b))	# 140705217569576
print(a is b)	# True
print(a == b)	# True

原理是:当我们已有个变量是小整数或小段的字符串,再次建立相同的小整数或小字符串时,python不会重新开辟一个内存空间,而是用指针将这个变量指向我们已经创建的内存空间,这个属于python内部的优化机制

相关推荐
zyq99101_111 分钟前
Python日期处理实战代码
python·算法·蓝桥杯
24kHT14 分钟前
tensorboard——SummaryWriter
python
高洁0116 分钟前
数据可视化实战:用AI工具制作专业数据分析图表
人工智能·python·深度学习·信息可视化·transformer
夏星印33 分钟前
argparse解析器参数详解
经验分享·笔记·python·学习·argparse
free-elcmacom1 小时前
C++ 默认参数详解:用法、规则与避坑指南
开发语言·c++
码云数智-大飞1 小时前
分布式事务解决方案全景指南:2PC、TCC、SAGA 与 Seata 实战
开发语言
娇娇yyyyyy1 小时前
QT编程(10): QLineEdit
开发语言·qt
Albert Edison1 小时前
【ProtoBuf 语法详解】Any 类型
服务器·开发语言·c++·protobuf
喵叔哟1 小时前
5. 【Blazor全栈开发实战指南】--Blazor组件基础
开发语言·javascript·ecmascript
鬓戈1 小时前
SeaweedFS集群上文件遍历和删除
运维·python