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

相关推荐
2401_85791829几秒前
实时数据处理中的C++应用
开发语言·c++·算法
2401_884563241 分钟前
C++中的装饰器模式实战
开发语言·c++·算法
xiangpanf1 分钟前
PHP vs Go:30秒读懂核心差异
java·开发语言
聆风吟º3 分钟前
【C标准库】C语言memset函数详解:从原理到实战避坑
c语言·开发语言·库函数·memset
idealzouhu3 分钟前
【Kotlin】 数据流完全指南:冷流、热流与 Android 实战
android·开发语言·kotlin
程序员老乔4 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(一):你的Java该升级了
java·spring boot·python
piepis4 分钟前
Linux 下升级 Python 3.7 → 3.9(离线)并内网安装本地python-packages
linux·运维·python
快快起来写代码5 分钟前
反射可能用于的场景
开发语言·python
Ivanqhz8 分钟前
图着色寄存器分配算法(Graph Coloring)
开发语言·javascript·python·算法·蓝桥杯·rust
一直都在5728 分钟前
JAVA类的加载过程
java·开发语言