mutetella hat geschrieben:@Dauerbaustelle:
'return' in einem Generator geht nicht.
Es kommt darauf an, ob return ein Argument bekommt oder nicht:
Code: Alles auswählen
>>> def gen(start=None):
... if start is None:
... return
... for trip in ['Paris', 'London', 'Bruessel', 'Heimertingen'][start:]:
... yield trip
...
...
>>> x = gen()
>>> x.next()
Traceback (most recent call last):
File "<input>", line 1, in <module>
StopIteration
>>> def gen2():
... if 2 < 5:
... return 38
... else:
... yield 42
SyntaxError: 'return' with argument inside generator (<input>, line 6)
Ich finde die Lösung von DasIch am einfachsten lesbar. Ist natürlich die Frage, ob du eine Fehlermeldung oder einfach nur StopIteration bei start=None haben willst.