> > I'd reformulate them as > > > > "%x" % (id(o) & 0xffffffffL) > > Of course, you have to replace 0xffffffffL with (unsigned)-1 of the > > system (i.e. 2l*sys.maxint+1). > > Hm. "%x" % (id(o) & 2L*sys.maxint+1) > > is considerably less obvious that "%x"%id(o) > > > I wonder whether creating a function > > sys.unsigned(id(o)) > > would be appropriate, which returns its arguments for positive > > numbers, and PyLong_FromUnsignedLong((unsigned)arg) otherwise. > > Possibly. I'm going to have to make the above patch to the 23 branch > in any case - warnings from the standard test suite are bad. Would a > different % format code be another option? This warning will go away in 2.4 again, where %x with a negative int will return a hex number with a minus sign. So I'd be against introducing a new format code. I've forgotten in what code you found this, but the sys.maxint solution sounds like your best bet. In 2.4 we can also make id() return a long when the int value would be negative; I don't want to do that in 2.3 since changing the return type and value of a builtin in a minor release seems a compatibility liability -- but in 2.4 the difference between int and long will be wiped out even more than it already is, so it should be fine there. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4