Why doesn't eval of generator expression work with locals?
Scott David Daniels
Scott.Daniels at Acm.Org
Wed Jan 28 13:00:43 EST 2009
Gabriel Genellina wrote:
> En Wed, 28 Jan 2009 01:36:57 -0200, Steve Holden <steve at holdenweb.com>
> escribió:
>> Gabriel Genellina wrote:
>>> En Tue, 27 Jan 2009 22:17:16 -0200, Robert Kern <robert.kern at gmail.com>
>>> escribió:
>
>>> I *thought* I did understand this until I came to this example:
>>>
>>> 1)
>>>>>> id(globals()), id(locals())
>>> (11239760, 11239760)
This is a bad test. We know distinct objects are distinct, but:
>>> print id(object()), id(object())
10598120 10598120
>>> a = object(); b = object()
>>> print id(a), id(b)
10598120 10598128
The reason is that once your created object has its id taken, you
must keep a handle on it, otherwise it may get recycled and reused.
That is, id(var1) == id(var2) implies var1 is var2,
but id(expr1) == id(expr2) does not even imply expr1 == expr2
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list