was bewirkt 'yield' befehl?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
david_

Dienstag 7. September 2004, 18:06

hi,
kann mir jemand erklaeren was der 'yield'-befehl bewirkt?

etwas in diesem zusammenhang:

Code: Alles auswählen

for e in postorder(tree[1]): yield e
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?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 7. September 2004, 19:07

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
Zuletzt geändert von Dookie am Dienstag 7. September 2004, 23:11, insgesamt 1-mal geändert.
[code]#!/usr/bin/env python
import this[/code]
david_

Dienstag 7. September 2004, 22:04

danke. habs verstanden.

PS: bei der for-schleife fehlt der ':' am ende :)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 7. September 2004, 23:10

jetzt is er da, wollte nur sehen ob du aufpasst ;)


Dookie
[code]#!/usr/bin/env python
import this[/code]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Mittwoch 8. September 2004, 17:12

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 :D ).
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 8. September 2004, 18:19

Durch yield wird eine funktion zum generator.

Code: Alles auswählen

from __future__ import generators
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten