[Python-de] Frage zur Implementierung von Generatoren (yield)

Martin v. Löwis martin at v.loewis.de
Die Jun 3 01:07:38 EDT 2003


Mark Zöltsch <zoeltsch at mooniewar.de> writes:

> Wenn ich mir den Generator Aufruf im Debugger ansehe, wird auch
> bei einem rekursiven Aufruf immer die selbe Funktion mit dem selben 
> Stack Frame verwendet (hätte gedacht das beim rekursiven Aufruf 
> dann immer 2 auf dem Stack liegen).

Kannst Du mal ein Beispiel angeben? Wenn ein Generator "sich selbst"
wieder ruft, wird *ganz bestimmt* für den inneren Generator ein neues
Frame-Objekt erzeugt.

Wenn man am Generator dann .next ruft, wird natürlich der Frame
weiterverwendet, der bei Generator-Erzeugung angelegt wurde - da
stehen ja die ganzen lokalen Variablen drin (u.a. auch die Referenz
auf den inneren Generator).

Ciao,
Martin