Python - Gibt es eine Möglichkeit, eine Gruppe von Renditen in Unterfunktion zu organisieren, um außerhalb der Hauptfunktion zu ergeben?

8

Ich habe eine neue Frage für Python-Gurus.

Ich habe Funktion A, die eine Menge wiederholter Ertragsaktionen wie folgt enthält:

%Vor%

so sieht es aus:

%Vor%

Gibt es eine Möglichkeit, alle wiederholten Ausbeuten in Funktion zu bringen und so etwas zu tun?:

%Vor%

Aktualisieren

%Vor%

Es ist nur ein Beispiel, aber in einer realen Anwendung ist es eine komplexere Folge von Ausbeuten, die sich mehr als einmal im Hauptgenerator wiederholt (es handelt sich also nicht um die Organisation von Ausbeuten), sondern um Untergeneratoren. Daher möchte ich Code-Duplizierung vermeiden.

    
Eugene Krevenets 22.11.2013, 21:54
quelle

2 Antworten

13

Wenn Sie die neueste und beste python (& gt; = 3.3) verwenden, gibt es die yield from konstruieren.

%Vor%

Es tut genau das, was Sie wollen: Sie können eine Funktion als Untergenerator aufrufen und alles zurückgeben, was es Ihnen liefert.

Wenn Sie eine frühere Version von python verwenden, müssen Sie dies leider manuell tun:

%Vor%

Sie können sie so gruppieren, um Platz zu sparen:

%Vor%     
slezica 22.11.2013, 21:57
quelle
2

itertools.chain ist die Funktion, nach der Sie suchen

%Vor%

Ausgaben:

%Vor%     
Rebs 11.05.2014 07:42
quelle

Tags und Links