Python中的“特权种族”是什么?

本文探讨了Python中对象的Id,特别是对于一些常用对象,如小数字、布尔值、None和特定字符串,Python如何通过内存地址共用来提高效率。介绍了id()函数的用法,并解释了为何某些对象的Id会相同,揭示了Python中内存地址共用的策略。

前几天,某个学习群里有小伙伴问了一个关于id()的问题。事后,猫猫想起Python中一些常用对象的内存地址是共用的,但是具体是哪些却忘了。于是,猫猫意识到这是我知识薄弱之处,有提升空间,便进行了一番学习。

有意进群讨论的,请加我微信,有意进群讨论的,请加我微信,有意进群讨论的,请加我微信, lijinwen1996329

今天,猫猫把学习到的部分内容总结出来,分享给大家。阅读本文,大家可以学到如下内容:

1、对象的Id是什么?
2、内置id()函数是什么?
3、共用Id的内存分配策略?特权种族?

学习群里的一道问题
首先,看看小伙伴贴出的代码:

In [1]: a=[1,2,3]
In [2]: id(a)
Out[2]: 2399283020744
In [3]: id(a.append(4))
Out[3]: 1417427824
In [4]: a.append(4)
In [5]: id(a)
Out[5]: 2399283020744

他的问题是:为何第二个id值(1417427824)不等于其它两个的id值(2399283020744)?还有这个id值(1417427824)到底是谁的id?

现在公布答案:第二个id值(1417427824)是None的id,只要打印id(None)就能看出来;至于为啥是None的id,因为列表的append()方法返回值是None,而id(a.append(4))等价于取这个append操作的返回值的id,也就是说id(a.append(4))等价于是id(None)。

博客
v8worker
05-08 2963
05-06 2948
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值