[Python-Dev] interaction between locals, builtins and except clause

Lisandro Dalcin dalcinl at gmail.com
Thu Jul 26 19:06:47 CEST 2007

Porting to Py3K, I modified a function like the followin, using a
trick for it working in Py2.x .

    def __iter__(self):
        if self == _mpi.INFO_NULL:
        try:    range = xrange
        except: pass
        nkeys = _mpi.info_get_nkeys(self)
        for nthkey in range(nkeys):
            yield _mpi.info_get_nthkey(self, nthkey)

However, I've got in my unittests (running with py3k)

ERROR: testPyMethods (__main__.TestInfo)
Traceback (most recent call last):
  File "tests/unittest/test_info.py", line 123, in testPyMethods
    for key in INFO:
  File "/u/dalcinl/lib/python/mpi4py/MPI.py", line 937, in __iter__
    for nthkey in range(nkeys):
UnboundLocalError: local variable 'range' referenced before assignment

I am not completelly sure if this is expected (it is, regarding
implementation, but perhaps not regarding Python as a language),  so
I post this for your consideration.

Lisandro Dalcín
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594

More information about the Python-Dev mailing list