python中的is是什么意思,pythonis和==的区别
==是比较两个对象的内容是否相等,即两个对象的“值”是否相等,而不管两个对象在内存中的引用地址是否相同。
Is比较两个实例对象是否相同,是否是同一个对象,是否占用同一个内存地址。比较两个条件:1。内容是一样的。2.内存中的地址是相同的。
a=10000
b=10000
print(a==b)#True
print(aisb)#True
打印(id(a))#4461408208
打印(身份证(b))#4461408208
你好,世界
b=helloworld
print(a==b)#True
print(aisb)#True
打印(id(a))#4461408208
打印(身份证(b))#4461408208
a=[11,22,33]
b=[11,22,33]
print(a==b)#True
打印(aisb)#假
打印(id(a))#4409720712
Print(id(b))#4409720776在上面的代码中,我们分别定义了两个变量A和B。通过输出结果可以发现,当变量为字符串或数字时,is和==的输出结果相同,当变量为列表时,is和==的输出结果不同。通过打印两个变量的id值,我们可以看到两个ID值是不同的。这是因为当我们创建列表A和B时,我们打开了两块内存来分别存储这两个变量。从外观上看,结果是一样的,只是两个变量指向的内存地址不同。我们将上述代码更改为以下代码:
1a=[11,22,33]
2b=a
3print(a==b)#True
4print(aisb)#True
5打印(id(a))#4535062408
6print(id(b))#4535062408在上面的代码中,我们没有直接给变量B赋值,而是让b=a,这样B和A指向同一块内存,所以A为B为真。
我在PyCharm编辑器中实现了上面的代码,但是在终端命令行中实现时,结果是不同的,如下所示:
1a=10000
2b=10000
3a==b
4真
5aisb
6错误
7id(a)
84360555120
9id(b)
10436055216相关推荐:《Python视频教程》
当我们使A和B的值变小时,它们如下:
a=100
b=100
a==b
真实的
布达佩斯美国国际学校
真实的
id(a)
4357367984
身份证(b)
357367984以上原因是python直接在内存中创建了小整数的副本,不会被回收。所有创建的小整数变量都可以直接从对象池中引用他。但是注意Python只缓存较小的整数对象(范围是[-5,256]),而不是所有的整数对象。也就是说,只有在这个[-5,256]范围内创建的变量值与is进行比较,才会有效。
在PyCharm中,当值超过256时,is和==的输出结果还是一样的,因为解释器也做了一些优化,缓存了数字和字符串等变量。
让我们再看一下当变量是字符串时的终端命令行:
1a=helloworld
2b=helloworld
3a==b
4真
5aisb
6错误
7id(a)
84359747248
9id(b)
1043612474081a=你好
2b=你好
3a==b
4真实
5aisb
6真
7id(a)
84361199040
9id(b)
104361199040从输出结果可以看出,当变量是命令行中的简单字符串时,输出结果是一致的,否则,输出结果是不一致的。这是因为Python也缓存简单的字符串对象,可以优化代码的运行速度,减少内存消耗。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。