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

相关推荐
轻松Ai享生活几秒前
5 Python 技巧,让你秒变大神
python
极客代码3 分钟前
Linux IPC:System V共享内存汇总整理
linux·c语言·开发语言·并发·共享内存·通信·system v
orangapple9 分钟前
一个差劲的软件设计
开发语言·c#
算法与编程之美12 分钟前
冒泡排序
java·开发语言·数据结构·算法·排序算法
Aphelios38013 分钟前
Java 学习记录:基础到进阶之路(一)
java·开发语言·学习·idea
白总Server14 分钟前
Bash和Zsh在处理大文件时优化方法
开发语言·网络·ide·stm32·安全·udp·bash
苦逼的老王33 分钟前
java之uniapp实现门店地图
java·开发语言·uni-app
一条晒干的咸魚39 分钟前
【C#学习笔记03】进制转换与反码、补码、原码
开发语言·笔记·学习·c#
十年之少1 小时前
内存检测工具——Qt Creator
开发语言·qt
网络安全(king)2 小时前
基于java社交网络安全的知识图谱的构建与实现
开发语言·网络·深度学习·安全·web安全·php