Das Schema ist:
ausdruck1 for
bezeichner in
ausdruck2
ausdruck1 ist immer das, was bei einem Iterationsschritt ausgegeben wird. Dieser Teil rückt bei der "klassischen" Variante ans Ende. Im Prinzip also:
Damit es wirklich ein Generator wird, müsste man es als Funktion schreiben und das Schlüsselwort
yield verwenden, damit das Ergebnis des Ausdrucks mit jedem Iterationsschritt geliefert wird:
Code: Alles auswählen
def generator():
for bezeichner in ausdruck2:
yield ausdruck1
Und dies wird dann von sum() verarbeitet. Zum Testen kann man auch einfach mal eine Liste übergeben:
sum() erwartet an der Stelle einfach nur etwas, woraus es sich die Elemente ziehen kann und addiert diese.