[Python-Dev] Pie-thon benchmark code ready

Tim Peters tim.one at comcast.net
Thu Jan 1 14:52:11 EST 2004


[Samuele Pedroni]
> btw in 2.1 there was no 0x (at least on Windows):
>
> Python 2.1.3 (#35, Apr  8 2002, 17:47:50) [MSC 32 bit (Intel)] on
> win32 Type "copyright", "credits" or "license" for more information.
>  >>> class C: pass
> ...
>  >>> C
> <class __main__.C at 007DE55C>
>  >>>

Yup.  Everywhere Python uses printf's %p format code to display pointers, C
doesn't define anything about what the output "looks like".  In really old
versions of MS C, %p used to embed a colon in the address too
(segment:offset).  For stuff going thru PyString_FromFormat(), I added crap
to that function to special-case %p formats, near this comment:

		/* %p is ill-defined:  ensure leading 0x. */

But older versions of Python don't have that hack -- and not all uses of %p
in Python go thru PyString_FromFormat (but most do now).

> ...
> If I were to put an 'at 0x' in there, I would be tempted to revert
> to that value (System.identityHashCode) but given that is not unique
> and != id(.), it is rather less useful.

CPython certainly intends to force a leading 0x (not 0X either -- it's
forcing lowercase 'x' too) in such displays now.  It's not doing anything to
force hex display of the rest, although I don't know of a platform C %p that
doesn't produce hex.  Still, displaying id() in hex is also an intent.

IOW, CPython is enduring some pain to try to make this consistent too; it's
not only Jython that can't get a free ride here.




More information about the Python-Dev mailing list