请谈谈Python中is 和 == 的区别(写代码演示)

请谈谈Python中is 和 == 的区别(写代码演示)
is用于比较两个变量是否引用了同一个内存地址 is 表示的是对象标示符(object identity),作用是用来检查对象的标示符是否一致,也就是比较两个对象在内存中的地址是否一样。

用于比较两个变量的值是否相等, 表示的是相等(equality),是用来检查两个对象是否相等。

is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。

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

# case 1:对于(比较小)数值型和(比较短)字符串型对象, python的存储机制使得a和b其实指向同一个地址,所以is和==都是True
a = 1
b = 1
print("a={0}, b={1}, a == b result: {2}".format(a, b, a==b))
print("a={0}, b={1}, a is b result: {2}".format(a, b, a is b))

# case 2:对于list、tuple等容器,a和b虽然内容一样,但是是两个不同的对象引用,指向两个不同的内存地址
a = [1, 2]
b = [1 ,2]
print("a={0}, b={1}, a == b result: {2}".format(a, b, a==b))
print("a={0}, b={1}, a is b result: {2}".format(a, b, a is b))

# case 3:实际上可以通过修改对象的__eq__方法改变==的比较方式,自定义一个类,并尝试重写__eq__方法让==一定返回False
class TestA():
    def __init__(self, num):
        self.num = num
    def __eq__(self, obj):
        return False
a = TestA(9)
b = TestA(9)
print("a={0}, b={1}, a == b result: {2}".format(a, b, a==b))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值