Seite 1 von 1

len() on iterator

Verfasst: Freitag 6. März 2009, 15:35
von Mad-Marty
Hi,

in Python 2.4 gab es noch eine __len__ methode auf iteratoren (z.b. tuple iteratoren), warum wurde len() bei iteratoren in 2.6 komplett gestrichen?

Verfasst: Freitag 6. März 2009, 15:49
von DasIch
Wurde es nicht.

Verfasst: Freitag 6. März 2009, 16:10
von BlackJack
@DasIch:

Code: Alles auswählen

Python 2.4.4 (#2, Jul 31 2008, 23:57:57)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = iter((1, 2, 3))
>>> a.__len__
<method-wrapper object at 0xb7cd426c>
>>>

Code: Alles auswählen

Python 2.6rc1 (r26rc1:66416, Sep 15 2008, 15:38:46)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = iter((1, 2, 3))
>>> a.__len__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tupleiterator' object has no attribute '__len__'
@Mad-Marty: Das wurde nie durch Dokumentation garantiert.

Verfasst: Freitag 6. März 2009, 17:36
von Mad-Marty
@ BlackJack

Ok hab nie nachgesehen ob das dokumentiert wurde, habe nur eben auf 2.6 festgestellt das es nicht mehr geht, zum glück nur einmal verwendet im source ;).


Auserdem fällt mir gerad auf das meine extensiv udp und pysnmp 2.x verwendende anwendung unter 2.6 sehr viel langsamer ist .... DeprecationWarnings bekomme ich aber keine.

Eine Idee woran das liegen könnte?