python 中 is 与 == 的区别
在 Python 中,比较两个对象是否相等,可以用 “is” 和 “==” , is 与 == 的区别是什么呢,首先先清楚is 与 == 的概念
is 的概念:
比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址。
== 的概念:
比较的是两个对象的内容是否相等
为了更好的理解下面举个例子
小明和小王 2个人都上一年级,2人刚上学的时候领取的语文课本,无论外表,还是里面的章节都是一模一样,但是2人的书是不同的对象
这个时候我们可以使用is 比较, 如果使用== 比较的话,就是相同了
下面在写一个demo
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # 打印结果为False
print(a == b) # 打印结果为True
这里a 就好比小明的语文课本, b 好比小王的语文课本 2个是不同的对象的,所以is 的时候返回的为False
is 比较的是内存地址,我们可以使用id()函数来打印下a 和 b 的内存地址
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a)) # id 值为:1831201289280
print(id(b)) # id 值为:1831201289600
print(a is b) # 打印结果为False
print(a == b) # 打印结果为True
---------------------------------下面在补充一点-------------------------------
python 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而对于可变对象,则会重新开辟空间
所以当使用is 比较 2个int 类型或者float 类型返回结果为True 的时候不要在质疑我上面下的知识点了,
例如 在使用pycharm 工具 测试下面2个
a = 3.14
b = 3.14
print(a is b) # 打印结果为True
或者
a = 500000
b = 500000
print(a is b) # 打印结果为True
原因就是:python 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而对于可变对象,则会重新开辟空间
具体的我在is 与not is 里面写了,地址链接
python 中 is 与 == 的区别相关推荐
- 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...
python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...
- python中arg,*arg,**kwarg区别
python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...
- Python中is和==的区别以及is None
0 前言 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id( ...
- Python中“is”和“==”的区别
Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还 ...
- pythonis啥意思-Python中is和==的区别
Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...
- Python中is和==的区别
在Python中一切都是对象. Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值).对象之间比较是否相等可以用==,也可以用is. is和==都是对 ...
- python中str和int区别_python中eval与int的区别浅析
python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...
- python中sort和sorted区别_Python中的 sort 和 sorted的用法与区别
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
- [转载] python中*args 和 **kwargs区别
参考链接: 带有* args和** kwargs的Python中的可变长度参数 1 *args 和 **kwargs 定义. 你可以将不定数量的参数传递给一个函数.不定的意思是:预先并不知道, 函数使 ...
- python中*args 和 **kwargs区别
1 *args 和 **kwargs 定义. 你可以将不定数量的参数传递给一个函数.不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字.其实并不是必须写成 ...
最新文章
- 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
- win7只能管理计算机软件吗,win7可以管理多少内存,win7内存优化软件
- php 取多级分类,php – 获取所有类别(多级)
- Servlet 工作原理解析--转载
- Vector 把一个vector追加到另一个vector
- java图片转换成base64_Java将图片转换成Base64字符串
- matlab lmi 定义一个任意方阵,matlab中LMI应用说明
- springboot整合mongodb changestream
- C#生成CHM文件(应用篇)之代码库编辑器(1)
- 孙鑫VC学习笔记:第二十讲 (一) Hook编程
- 论文阅读:Dual Reader-Parser on Hybrid Textual and Tabular Evidence for Open Domain Question Answering
- RGL: A Simple yet Effective Relation.. 文章详解
- 12306一直显示服务器忙,网购春运火车票首日 12306网站又现服务器忙
- 线性规划问题之案例1(奶制品的生产与销售)
- MySql高级索引、事务
- 书单来了!大厂的技术牛人在读什么:华为篇
- ionic自定义图标心得分享
- Excel 自动调整行高后增加高度
- Java-Map-详解
- 中国信息安全测评中心强硬发声,落实等保2.0制度