Strange object identity problem

duncan smith buzzard at invalid.invalid
Mon Nov 12 18:02:13 CET 2012


On 12/11/12 13:40, F.R. wrote:
> On 11/12/2012 02:27 PM, Robert Franke wrote:
>> Hi Frederic,
>>
>> [...]
>>
>>>>>> bas = {}
>>>>>> for year in range (2010, 2013):
>>>      ba = st.runs ('BA', '%d-01-01' % year, '%d-12-31' % year)
>>>      ba.run ()
>>> print year, id (ba)
>>>      bas [year] = ba
>>>
>>> 2010 150289932
>>> 2011 150835852
>>> 2012 149727788
>>>
>>>>>> for y in sorted (bas.keys ()):
>>>      b = bas [year]
>> Shouldn't that be b = bas[y]?
> Yes, it should, indeed! What's more, I should have closed and restarted
> IDLE. There must have
> been a name clash somewhere in the name space. The problem no longer
> exists. Sorry
> about that. And thanks to all who paused to reflect on this non-problem.
> - Frederic.
>
>>
>>
>>>      print y, id (b)
>>>
>>> 2010 149727788
>>> 2011 149727788
>>> 2012 149727788
>>>
>> [...]
>>
>> Cheers,
>>
>> Robert
>>
>

The problem was that year was bound to the integer 2013 from the first 
loop. When you subsequently looped over the keys you printed each key 
followed by id(bas[2013]). Restarting IDLE only helped because you 
presumably didn't repeat the error.

Duncan



More information about the Python-list mailing list