is 与 == 区别

目录

一、list:

二、dict

三、数字类型

四、字符串

总结:


Python中提供关键字 is ,同时,==也是判断运算符,那区别是什么?

Python中is的含义:

is 操作符是Python语言的一个内建的操作符。它的作用在于比较两个变量是否指向了同一个对象。

Python中==的含义:

==运算符是Python语言的一个内建的运算符。它的作用在于比较两个变量所指代的含义是否相同。

看下实际类型的比较结果。

一、list:

a = [1, 2, 3]
b = [1, 2, 3]
print(a, b)
print(a == b)
print(id(a), id(b))
print(a is b)

结果:

[1, 2, 3] [1, 2, 3]
True
1908181852744 1908181852808
False

输出结果非常符合预期,==在比较指代的值,值是相同的。is在比较原生对象,对象是不同的。

二、dict

i = {'first': 100, 'second': 200}
j = {'first': 100, 'second': 200}
print(i, j)
print(i == j)
print(id(i), id(j))
print(i is j)

结果: 

{'first': 100, 'second': 200} {'first': 100, 'second': 200}
True
1724620503584 1724620503656
False

结果和list的比较结果相同。==在比较指代的值,值是相同的。is在比较原生对象,对象是不同的。

三、数字类型

m = 1
n = 1
print(m, n)
print(m == n)
print(id(m), id(n))
print(m is n)

结果:

1 1
True
140715017163808 140715017163808
True

数字类型的比较结果和预想有些出入,声明了两个对象,m和n。数值理应是相同的,但是为什么is比较也是相同的呢?

这里是因为Python对部分数字和字符串做了优化处理,即使你声明了很多对象,但是实际他们都只有一个对象。即Python的大整数池和小整数池。

四、字符串

x = 'test'
y = 'test'
print(x, y)
print(x == y)
print(id(x), id(y))
print(x is y)

结果: 

test test
True
2377997697744 2377997697744
True

同上,这里的is比较也是相同的。

在Python中,数值型和字符串型的情况下,==和is的比较都是True,当类型为tuple,list,dict或set型时,==和is的比较都是False。

总结:

is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。可以看出,is 是比 == 更严格的检查,is 返回True表明这两个对象指向同一块内存,值也一定相同。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值