Seite 1 von 1
was bewirkt 'yield' befehl?
Verfasst: Dienstag 7. September 2004, 18:06
von david_
hi,
kann mir jemand erklaeren was der 'yield'-befehl bewirkt?
etwas in diesem zusammenhang:
oder
Code: Alles auswählen
tmp = [tree]
while tmp[0]:
node, left, right = tmp[0]
yield node
also ich code schon laenger mit python aber den befehl aber bisher noch nie benoetigst oder in einem programm gesehen. kennst ihn jemand?
Verfasst: Dienstag 7. September 2004, 19:07
von Dookie
Hi David,
yield wird für Iteratoren benötigt:
Code: Alles auswählen
def zaehler(start=0):
cnt = start
while True:
yield cnt
cnt += 1
iterator = zaheler()
print "iterator =", iterator.next()
for i in xrange(10):
print "i = %i, iterator = %i" %(i, iterator.next())
Jeder Aufruf von next(), geht bis zum nächsten yield und gibt den Wert hinter yield zurück. Iteratoren können auch in for-Schleifen oder zur erzeugung von Listen verwendet werden. Wird die Iteratorfunktion beendet, Wird eine "StopIteration" Exception geworfen.
Gruß
Dookie
Verfasst: Dienstag 7. September 2004, 22:04
von david_
danke. habs verstanden.
PS: bei der for-schleife fehlt der ':' am ende

Verfasst: Dienstag 7. September 2004, 23:10
von Dookie
jetzt is er da, wollte nur sehen ob du aufpasst
Dookie
Verfasst: Mittwoch 8. September 2004, 17:12
von Milan
HI. Ein schöner Link dazu:
http://docs.python.org/whatsnew/section-generators.html . Schau dir auch mal das Modul itertools an, mit dem kann man wunderschön programmieren (noch schöner gehts seit Python 2.4 mit generator expressions

).
Verfasst: Mittwoch 8. September 2004, 18:19
von Leonidas
Durch yield wird eine funktion zum generator.