Python is与==的区别

本文详细解释了Python中is与==操作符的区别,并通过示例说明了它们在内存地址和值比较上的应用。此外还介绍了Python对于int和string类型的特殊处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然有很多类似的介绍,但是我觉得我还得记录下,只有记录下来了才能算是自己的东西。

在pyhon中,==的概念就是值(value)相同就为true,但是is的概念是必须是ID相同,也就是存储地址相同,或者说指向地址相同。

例子

>>> a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
<pre name="code" class="python">>>> id(a)
1905732376584
>>> id(b)
1905732376840

这样子就可以看到明显的不同。

但是因为Python对于短小的int与string类型进行了地址上的优化,所以有时候使用起来==与is基本类似。

例子:

a=4
b=4
a is b
结果应为true
但是float类型却不行:

a=2.5
b=2.5
a is b
结果为false

另外,闲着蛋疼,实测下来int类型最大极限应该是256。

>>> a=256
>>> a is 256
True
>>> id(a)
1511989680
>>> id(256)
1511989680
>>> a=257
>>> a is 257
False
>>> id(a)
2310294174960
>>> id(257)
2310294174800

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值