[python] Jakého typu je iterátor?

jiri.zahradil na gmail.com jiri.zahradil na gmail.com
Pátek Duben 20 09:19:57 CEST 2007


> jakeho typu je vlastně iterator? V modulu types je ani ve verzi 2.4, ani ve
> 2.5 nevidím. Ani mechanicke porovnani typu mi nevrati nic. Pritom generatory,
> ktere jsou iteratorum podobne, v modulu types jsou ...
>
> import types
> for t in dir(types):
>     if type(iter([1, 2])) == eval ('types.' + i):	print i
>
> Myslite, ze je to chyba v Pythonu, nebo jsou uz iteratory deprecated a nikoho
> nezajimaji?

Typ iterátor opravdu v types není, navíc se preferuje použít např. jen
int či str místo IntType a StringType, takže možná částečně jsou types
deprecated. Nemyslím ale, že iterátory samotné jsou deprecated, jen
myslím mají jiný typ než např. generátory. I jednoduchý xrange má svůj
vlastní typ. Nakonec, pokud to potřebujete, typ iterátor lze velice
snadno doplnit:

import types
types.IterType = type(iter([]))

# a váš příklad
for t in dir(types):
     if type(iter([1, 2])) == eval ('types.' + t):	print t

>>> IterType

Zdravím

Jiří Zahradil



Další informace o konferenci Python