diff -r 000a3f7487a5 Doc/faq/programming.rst --- a/Doc/faq/programming.rst Sat Oct 12 13:24:55 2013 +0200 +++ b/Doc/faq/programming.rst Sat Oct 12 13:47:36 2013 +0200 @@ -1599,6 +1599,31 @@ You can program the class's constructor 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 and deleted +during 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 =======