mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
Closes #13203: add a FAQ section about seemingly duplicate id()s.
This commit is contained in:
parent
4b5325963b
commit
d8ede4fddd
1 changed files with 26 additions and 0 deletions
|
|
@ -1599,6 +1599,32 @@ You can program the class's constructor to keep track of all instances by
|
||||||
keeping a list of weak references to each instance.
|
keeping a list of weak references to each instance.
|
||||||
|
|
||||||
|
|
||||||
|
Why does the result of ``id()`` appear to be not unique?
|
||||||
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
The :func:`id` builtin returns an integer that is guaranteed to be unique during
|
||||||
|
the lifetime of the object. Since in CPython, this is the object's memory
|
||||||
|
address, it happens frequently that after an object is deleted from memory, the
|
||||||
|
next freshly created object is allocated at the same position in memory. This
|
||||||
|
is illustrated by this example:
|
||||||
|
|
||||||
|
>>> id(1000)
|
||||||
|
13901272
|
||||||
|
>>> id(2000)
|
||||||
|
13901272
|
||||||
|
|
||||||
|
The two ids belong to different integer objects that are created before, and
|
||||||
|
deleted immediately after execution of the ``id()`` call. To be sure that
|
||||||
|
objects whose id you want to examine are still alive, create another reference
|
||||||
|
to the object:
|
||||||
|
|
||||||
|
>>> a = 1000; b = 2000
|
||||||
|
>>> id(a)
|
||||||
|
13901272
|
||||||
|
>>> id(b)
|
||||||
|
13891296
|
||||||
|
|
||||||
|
|
||||||
Modules
|
Modules
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue