python中is和==的区别

定义变量会有:id(唯一标识号,也可以认为是内存地址),type(变量类型),value(变量值)。

  • 等号比较的是value,如果value一样,type也一样;
  • is比较的是id,也就是比较内存地址;

强调

  • id相同,意味着type和value必定相同;
  • value相同type肯定相同,但id可能不同;

通过代码进行验证:

a = [1, 2, 3]
b = [1, 2, 3]
c = d = [1, 2, 3]

print('a == b?:', a == b)
print('a is b?:', a is b)

print('='*20)

print('the id of a', id(a))
print('the id of b', id(b))

print('='*20)

print('c == d?:', c == d)
print('c is d?:', c is d)
print('the id of c', id(c))
print('the id of d', id(d))

其输出为

a == b?: True
a is b?: False

====================

the id of a 2043850088968
the id of b 2043850089032

====================

c == d?: True
c is d?: True
the id of c 2043871237512
the id of d 2043871237512

由此可以看出is和==的不同,但是在用自己的电脑终端或者Pycharm测试的时候可能出现a is b结果是True的情况,这是Pycharm或者终端环境做的内存优化,当变量比较长的时候就没有问题了。

参考资料:python编程高手之旅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值