language-x-isms

Alan Kennedy alanmk at hotmail.com
Thu Jun 8 06:30:25 EDT 2006


[Alan Kennedy]
> On jython 2.1, I use something like this
> #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> try:
>   enumerate
> except NameError:
>   def enumerate(iterable):
>     results = [] ; ix = 0
>     for item in iterable:
>       results.append( (ix, item) )
>       ix = ix+1
>     return results

[Fredrik Lundh]
>> at least in CPython, using a user-defined enumerate function is a bit
>> slower than using the built-in version.

[Alan Kennedy]
>> Who's using a user-defined enumerate on cpython?

[Fredrik Lundh]
> anyone targeting older Python platforms.

You mean python platforms where there is no built-in enumerate?

Your comment makes "using a user-defined enumerate [on cpython] is
slower than using the built-in version" makes no sense in relation to
the code I posted, which only defines a user-defined enumerate *if
there is no builtin enumerate*.

[Alan Kennedy]
>> On cpython, the reference to enumerate doesn't generate a NameError,

[Fredrik Lundh]
>  > python
> Python 2.2.3 (#42, May 30 2003, 18:12:08)
>  >>> enumerate
> Traceback (most recent call last):
>    File "<stdin>", line 1, in ?
> NameError: name 'enumerate' is not defined

Right: there is no built-in enumerate on cpython 2.2. So how could a
user-defined one be slower than it?

Of course, my cpython comment referred to recent cpythons, i.e. 2.3,
2.4, 2.5. The code I supplied works on all versions of python, and
*never* replaces the built-in enumerate, if there is one.

So what's the problem, exactly?

regards,

--
alan kennedy
------------------------------------------------------
email alan:              http://xhaus.com/contact/alan




More information about the Python-list mailing list