为什么两个单独创建的不可变对象具有相同的 id,而可变对象具有不同的 id,但两者都引用相同的值? [复制]

2023-11-25

两个单独创建的可变列表具有不同的 id。

Python SHELL:(可变)

>>> mylist = ['spam', 'eggs']
>>> yourlist = ['spam', 'eggs']
>>> id(mylist), id(yourlist)
(49624456, 48910408)

虽然两个单独创建的不可变字符串具有相似的 id。

Python SHELL:(不可变)

>>> a = 10
>>> b = 10
>>> id(a), id(b)
(507099072, 507099072)

Is a and b引用同一个对象?如果不是,为什么 id 相似? 是mylist and yourlist引用不同的对象?如果是,为什么他们有不同的 id。


Python 缓存一些小字符串和数字:http://docs.python.org/2/c-api/int.html#PyInt_FromLong

当前的实现为所有对象保留一个整数对象数组 -5 到 256 之间的整数,当您创建该范围内的 int 时 实际上只是返回对现有对象的引用。

And id(some_list)总是给你地址容器- 列出内存中的对象,而不是列表中的字符串!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么两个单独创建的不可变对象具有相同的 id,而可变对象具有不同的 id,但两者都引用相同的值? [复制] 的相关文章

随机推荐