Generatorfunktionen in Python
Generatorfunktionen ergeben bei jedem Aufruf einen Iterator.
Dieser ergibt bei jedem Abrufe eines Objektes das Ergebnis einer yield-Anweisung.
Dazu läuft die Generatorfunktion bis einschließlich zu jener yield-Anweisung und hält danach bis zum nächsten Abruf ihres Iterators an.
- Protokoll (etwas gekürzt)
def generator():
yield 0;
yield 1;
yield 2;iterator = generator()
next( iterator )
0
next( iterator )
1
next( iterator )
2
iterator = generator()
print( *iterator )
0 1 2
iterator = generator()
tupel( iterator )
(0, 1, 2)
iterator = generator()
for x in iterator:
print( x )0
1
2
for x in generator():
print( x )0
1
2
print( *generator() )
0 1 2
tupel( generator() )
(0, 1, 2)
next( generator() )
0
next( generator() )
0
next( generator() )
0
def generator():
yield( -1 )
for i in range( 3 ):
yield( 2*i )iterator = generator()
next( iterator )
-1
next( iterator )
0
next( iterator )
2
next( iterator )
4
next( iterator )
StopIteration
- Protokoll (etwas gekürzt)
for i in gen():
yield i
gleiche Bedeutung
- Protokoll (etwas gekürzt)
yield from gen()