On Mon, 17 Jun 2013 23:39:10 -0700, Larry Hudson wrote: > On 06/17/2013 08:50 AM, Simpleton wrote: >> On 17/6/2013 2:58 μμ, Michael Torrie wrote: >> >> a = 5 >> b = a >> >> a <---> memory address >> b <---> memory address >> >> I like to think a and b as references to the same memory address >> > Not quite: a and b _are_ memory addresses,
Not in Python they aren't. a and b are names in a namespace. > At the same time, a and b > are references to the data (the objects) stored in those memory > locations. Not in Python they aren't. In Python, objects are free to move around memory. Not all implementations take advantage of this freedom, but some like Jython, IronPython and PyPy do. > The distinction is probably more important in languages like C/C++, > where the _language_ gives you direct access to, and can manipulate, > these memory addresses (through pointers). Python handles it > differently and does not give you this sort of ability, it all occurs > "under the hood". Yes, the id() function will tell you the addresses, > but you can't do anything with them other than perhaps compare them. > It's really pretty much useless information. The id() function does not tell you the address of the object, except by accident. The id() function gives you an arbitrary ID number for the object: steve@runes:~$ ipy IronPython 2.6 Beta 2 DEBUG (2.6.0.20) on .NET 2.0.50727.1433 Type "help", "copyright", "credits" or "license" for more information. >>> id([]) 43 >>> id('*') 44 steve@runes:~$ jython Jython 2.5.1+ (Release_2_5_1, Aug 4 2010, 07:18:19) [OpenJDK Client VM (Sun Microsystems Inc.)] on java1.6.0_18 Type "help", "copyright", "credits" or "license" for more information. >>> id([]) 1 >>> id('*') 2 That some implementations happen to use a fixed memory address as the ID number is, well, a mere accident of implementation. That's not what id() *is*, any more than "id() returns the next value in an integer sequence starting from 43" just because that's what IronPython happens to do. -- Steven -- http://mail.python.org/mailman/listinfo/python-list