Explanation of list reference
Marko Rauhamaa
marko at pacujo.net
Sun Feb 16 06:18:51 EST 2014
Steven D'Aprano <steve+comp.lang.python at pearwood.info>:
> On Sat, 15 Feb 2014 23:01:53 +0200, Marko Rauhamaa wrote:
> I demonstrated a situation where your claim:
>
> id(x) == id(y) implies x is y
>
> fails.
My from-the-hip formulation can obviously be inaccurate, but I was
hoping the point was clear.
The Python language specification feels the need to introduce the
nebulous concept of "object lifetime." I believe that concept can be
more confusing than useful. Compare that with Common Lisp, whose objects
are by definition eternal; there's no garbage collection. Practical
implementations do collect garbage, but that's an optimization that
doesn't affect the observed output of a program.
It is possible to define id() without making any references to the
object lifetime.
Let's, then, make a more satisfactory attempt at specifying id():
1. For any argument, the function
id
returns an integer.
2. For any pair of arguments, the function
lambda x, y: (id(x) == id(y)) == (x is y)
returns True.
That should cover all valid implementations and uses of id().
Marko
More information about the Python-list
mailing list