python杂记——is和==的区别

本文探讨Python中is和==的区别。is用于检查两个对象是否是同一个对象,即是否指向内存中的同一地址,而==则比较对象的值是否相等。通过id()函数可以获取对象的内存地址。在不同测试环境中,is和==的使用会揭示一些有趣的现象。

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

python中一切都是对象,is和==是常用来进行对象比较。记录一下两者之间的区别。

==是用来比较两个对象的值是否相等;而is是比较两个对象是不是同一个,也就是指向同一块内存地址。介绍is之前先说一下id函数。id函数是获取对象在生命周期中的标示,一个对象的标示始终是唯一且不变的,也可以将该标示理解为内存地址。
下面通过几个例子来说明一下。

测试环境:Ubuntu18 + python3.7

def test_is_equ():
    a = 9
    b = 9
    print("a == b: ", a == b, "; a is b: ", a is b, "; id(a): ", id(a), "; id(b): ", id(b))
    
    a = 10000
    b = 10000
    print("a == b: ", a == b, "; a is b: ", a is b, "; id(a): ", id(a), "; id(b): ", id(b))
    
    l1 = [1, 2, 3, 4, 5]
    l2 = [1, 2, 3, 4, 5]
    print("l1 == l2: ", l1 == l2, "; l1 is l2: ", l1 is l2, "; id(l1): ", id(l1), "; id(l2): ", id(l2))
    
    a = 1
    b = 2
    print("a == b: ", a == b, "; a is b: ", a is b, "; id(a): ", id(a), "; id(b): ", id(b))
    
    a = b
    print("a == b: ", a == b, "; a is b: ", a is b, "; id(a): ", id(a), "; id(b): ", id(b))
test_is_equ()

测试结果:

a == b:  True ; a is b:  True ; id(a):  94902318789824 ; id(b):  94902318789824
a == b:  True ; a is b:  True ; id(a):  140651975821168 ; id(b):  140651975821168
l1 == l2:  True ; l1 is l2:  False ; id(l1):  140651949194688 ; id(l2):  140651948992704
a == b:  False ; a is b:  False ; id(a):  94902318789568 ; id(b):  94902318789600
a == b:  True ; a is b:  True ; id(a):  94902318789600 ; id(b):  94902318789600
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值