[Python-3000] interaction between locals, builtins and except clause
Nick Coghlan
ncoghlan at gmail.com
Fri Jul 27 12:20:09 CEST 2007
Lisandro Dalcin wrote:
> I think it should work in any 2x and 3K. Is this right? Perhaps this
> trick could be used for some automated conversion tool targeting
> backward compatibility with 2.x series.
The backwards compatible version looks like this:
def __iter__(self):
if self == _mpi.INFO_NULL:
return
nkeys = _mpi.info_get_nkeys(self)
for nthkey in xrange(nkeys):
yield _mpi.info_get_nthkey(self, nthkey)
The 2to3 converter will automatically convert the xrange() call to a
range() call for the Py3k version.
If you want to persist in trying to get the same code running on both
Py3k and 2.x without using the 2->3 converter, then I suggest
segregating it all into a compatibility module and do:
from py3k_compat import _range
The try/except code to determine how to set _range would then occur only
once, regardless of the number of places where you used it.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://www.boredomandlaziness.org
More information about the Python-3000
mailing list