On Wed, 05 Sep 2012 11:09:30 -0400, Dave Angel wrote: > On 09/05/2012 10:41 AM, Steven D'Aprano wrote: [...] >> So, for current day computers at least, it is reasonable to say that "a >> is b" implies that a and b are the same object at a single location. > > You're arguing against something i didn't say. I only said that id() > doesn't promise to be a memory address. i said nothing about what it > might mean if the "is" operator considers them the same.
I'm not arguing at all. I'm agreeing with you, but going into more detail. >> The second half of the question is more complex: >> >> "id(a) == id(b)" *only* implies that a and b are the same object at the >> same location if they exist at the same time. If they don't exist at >> the same time, then you can't conclude anything. >> >> > But by claiming that id() really means address, I didn't actually say that. If you re-read Franck Ditter's previous post, he doesn't actually say that either. > and that those addresses > might move during the lifetime of an object, then the fact that the id() > functions are not called simultaneously implies that one object might > move to where the other one used to be before the "move." Well, yes, but I expect that implementations where objects can move will not use memory addresses as IDs. They will do what Jython and IronPython do and use arbitrary numbers as IDs. (Oh how I wish CPython hadn't used memory addresses as IDs.) > I don't claim to know the jython implementation. But you're claiming > that id() means the address of the object, even in jython. Good god no! I'm saying that, *if* a and b exist at the same time, *and* if id(a) == id(b), *then* a and b must be the same object and therefore at the same address. That doesn't mean that the ID is the address! > I think it much more likely that jython uses integer values for the id() > function, and not physical addresses. That's exactly what it does. It appears to be a simple counter: each time you ask for an object's ID, it gets allocated the next value starting from 1, and values are never re-used. -- Steven -- http://mail.python.org/mailman/listinfo/python-list