ID(对象)
这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的.
你能解释一下这个输出吗?为什么会j改变?
>>> i=10
>>> id(i)
6337824
>>> j=10
>>> id(j)
6337824
>>> j=j+1
>>> id(j)
6337800
>>> id(i)
6337824
Run Code Online (Sandbox Code Playgroud)
Joh*_*ica 31
因为整数是不可变的,所以每个整数值都是具有唯一id的不同对象.整数10具有不同的id 11.执行j=j+1操作不会更改现有整数对象的值,而是更改j为指向对象11.
看看当我们独立创建一个新变量k并为其赋值时会发生什么11:
>>> j=10
>>> id(j)
8402204
>>> j=j+1
>>> id(j)
8402192
>>> k=11
>>> id(k)
8402192
Run Code Online (Sandbox Code Playgroud)
请注意,并非总是每个整数都有一个且只有一个对应的对象.这只适用于Python决定缓存的小整数.大整数不会发生这种情况:
>>> x = 123456789
>>> id(x)
8404568
>>> y = 123456789
>>> id(y)
8404604
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.python.org/3/c-api/long.html#c.PyLong_FromLong:
当前实现为-5到256之间的所有整数保留一个整数对象数组,当您在该范围内创建一个int时,实际上只返回对现有对象的引用.
| 归档时间: |
|
| 查看次数: |
8828 次 |
| 最近记录: |