id()与is与==的区别与关系--数据类型

1.id()

与下面is相关联

例如在python中,值是靠引用来传递的。

我们可以用id()来判断两个变量是否为同一个值的引用。我们可以将id值理解为那块内存的地址标识。

id()返回其十进制的地址。

1.那我们怎么用id()判断数据类型是否可变呢

我们可以先定义两个相同的可变数据类型和一个两个不可变数据类型

然后我们再打印出他们的id。

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

然后我们可以看到输出结果

当两个变量内容相同时,不可变数据类型地址相同,可变数据类型不相同(随机)。

2.is

is:判断两个对象是否具有相同的内存地址。用于比较两个对象是否指向同一内存地址,即是否为同一个对象。

见下图,is依旧可以判断数据类型是什么。

因此,我们可以再次得出

当两个变量内容相同时,不可变数据类型地址相同,可变数据类型不相同(随机)。

但是,这样的写法是不对的

在第一个例子中,id(a)== id(b)比较的是a和b的标识符是否相等。由于a与b都是整数1,它们具有相同的标识符,因此返回True。

在第二个例子中,id(a)  is  id(b)比较的是id(a)和 id(b)的地址是否相等,即使在外部实现的id(a)与id(b)数值相等。但是在内部id()使用的时候。由于使用is,is会再次从左到右判断内存地址,两个id()同时生成地址时不一定一样。这两个生成的是随机的(小概率第二个结果为True)。

3.==

==: 不涉及对象的内存地址,只关心值的比较。用于比较两个对象的值是否相等,是Python中的等值比较运算符。

a = 1
b = 1
print(id(a) == id(b))
print(a == b)

'''
运行结果:
True
True
'''

==仅仅是比较值是否相等。

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值