Steven D'Aprano <st...@pearwood.info> writes:

> On Thu, 26 Nov 2015 09:34 pm, Dave Farrance wrote:
>
>
>> (Conversely, I see that unlike CPython, all PyPy's numbers have
>> unchanging ids, even after exiting PyPy and restarting, so it seems that
>> PyPy's numerical ids are "faked".)
>> 
>> [PyPy 2.6.1 with GCC 4.9.2] on linux2
>>>>>> id(1+2j)
>> 679900119843984469027190799480815353863L
>> 
>> [PyPy 2.6.1 with GCC 4.9.2] on linux2
>>>>>> id(1+2j)
>> 679900119843984469027190799480815353863L
>
>
> I'm pretty sure that they are faked.

The hex value may be instructive:

0x1ff800000000000020000000000000007L

That's 0x3ff00000000000004000000000000000 << 3 | 7.

3ff000... is the double representation of 1, 400000... is 2.

I bet that that three-bit field at the end has different values for all
the different types they are "faked" for, and one for the ones that
they're "not faked".

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to