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

相关推荐
二十雨辰5 小时前
[Java]-Spring面试题
java·开发语言
北斗落凡尘6 小时前
如何使用LangGraph(1)
python·langchain
萧瑟余晖6 小时前
Java深入解析篇二十二之虚拟线程
java·开发语言
油丶酸萝卜别吃6 小时前
Java 集合类全景介绍
java·开发语言
Iruoyaoxh6 小时前
类和对象~
开发语言·c++
程序喵大人7 小时前
【C++进阶】STL算法与函数对象 - 04 find、count和any_of把查询写成意图
开发语言·c++·算法
Livia要学习7 小时前
Python装饰器
开发语言·python
一直都在5727 小时前
LangChain4j精讲
开发语言·人工智能
吹什么轩7 小时前
c++复习:c++11:lambda表达式
开发语言·c++
不会代码的小猴7 小时前
标准模板库(STL)
开发语言·c++·笔记·算法