diff options
author | Georg Brandl <georg@python.org> | 2013-10-12 16:14:25 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2013-10-12 16:14:25 (GMT) |
commit | d8ede4fddd5305ced045d07e95c70cdea1d097af (patch) | |
tree | 09124d2bfef5a9db59538eadbc68d942b5d20705 /Doc | |
parent | 4b5325963bd249479cb6b1abe8ffaa75ac5bb80a (diff) | |
download | cpython-d8ede4fddd5305ced045d07e95c70cdea1d097af.zip cpython-d8ede4fddd5305ced045d07e95c70cdea1d097af.tar.gz cpython-d8ede4fddd5305ced045d07e95c70cdea1d097af.tar.bz2 |
Closes #13203: add a FAQ section about seemingly duplicate id()s.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/faq/programming.rst | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 2fbe92a..3fd31b4 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -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. +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 ======= |