[Tutor] Nested use of replication operator on lists

Steven D'Aprano steve at pearwood.info
Fri May 25 02:34:55 EDT 2018


On Thu, May 24, 2018 at 10:39:17PM -0700, Danny Yoo wrote:

> Each value in Python has an associated numeric address associated to it.

No they don't :-)

Each object in Python has an arbitrary numeric ID associated with it. 
The Python language has no supported way to get the address of an 
object. The id() function returns an opaque and officially meaningless 
ID number, that is all.

It so happens that CPython uses the (memory) address of the object as 
that ID number, but not all Python interpreters do the same. Jython and 
IronPython, for example, assign IDs in consecutive order, so you will 
get IDs like 20, 21, 22, 23, 24, etc.

(By memory, IronPython allocates the ID when the object is first 
created, while Jython allocates an ID only when you ask for one.)

The reason IronPython and Jython do that is because they run inside an 
environment where objects can be moved around memory by the memory 
manager and garbage collector. So if an object X has address 1234 at one 
moment, a little later it could be moved to address 9516. Using the 
address would not be stable.



-- 
Steve


More information about the Tutor mailing list