You*_*mon 4 python immutability identifier concept mutability
两个单独创建的可变列表具有不同的 ID。
Python外壳:(可变)
>>> mylist = ['spam', 'eggs']
>>> yourlist = ['spam', 'eggs']
>>> id(mylist), id(yourlist)
(49624456, 48910408)
Run Code Online (Sandbox Code Playgroud)
虽然两个单独创建的不可变字符串具有相似的 id。
Python外壳:(不可变)
>>> a = 10
>>> b = 10
>>> id(a), id(b)
(507099072, 507099072)
Run Code Online (Sandbox Code Playgroud)
是a和b引用同一个对象?如果不是,为什么 id 是相似的?是mylist和yourlist引用不同的对象吗?如果是,为什么他们有不同的 id。
Python 缓存一些小字符串和数字:http : //docs.python.org/2/c-api/int.html#PyInt_FromLong
当前的实现为 -5 到 256 之间的所有整数保留了一个整数对象数组,当您在该范围内创建一个 int 时,您实际上只是返回对现有对象的引用。
并且id(some_list)始终为您提供容器的地址- 内存中的列表对象,而不是列表中的字符串!
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |