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内部的优化机制

相关推荐
晚烛几秒前
CANN 自定义算子开发:Ascend C 编程接口与算子实现完整指南
c语言·开发语言·人工智能·python
问心无愧0513几秒前
ctf show web入门 254
java·开发语言·笔记
MediaTea几秒前
PyTorch:神经网络模块
人工智能·pytorch·python·深度学习·神经网络
Byte Wizard1 分钟前
自定义类型:结构体
c语言·开发语言
郝学胜-神的一滴6 分钟前
Qt 高级开发 013: 元对象编译器(MOC)
开发语言·c++·qt·程序人生·用户界面
还是鼠鼠1 小时前
AI掘金头条新闻系统 (Toutiao News)-用户注册-生成Token
后端·python·mysql·fastapi·web
吃好睡好便好8 小时前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
TechWayfarer8 小时前
查询IP所在地的3种方案:从API到离线库,风控场景怎么选?
开发语言·网络·python·网络协议·tcp/ip
摇滚侠8 小时前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
程序员榴莲9 小时前
Python 单例模式
开发语言·python·单例模式