Ich habe folgende Funktionen schreiben: zu tunWie man eine guten Generator Verkettungs Funktion
def read_data(file_location):
for line in open(file_location):
# pre-process the line
yield line
def transform_1(data):
for line in data:
# change line in some way
yield line
def transform_2(data):
for line in data:
# change line in some other way
yield line
def process_file(file_location):
# Some description
#
# returns:
# generator
data = read_data(file_location)
data = transform_1(data)
data = transform_2(data)
return data
Was ich versuche, Zeilen aus einer Datei zu lesen, jede Zeile mit einer Reihe von Funktionen umsetzen, und dann tun etwas mit den resultierenden Linien. Ich möchte nicht alle Zeilen auf einmal lesen, da die Datei ziemlich groß ist.
Meine Frage ist, ob ich das richtig mache. Der Code wird korrekt ausgeführt, aber die Programmausführung in meinem Kopf fühlt sich so kompliziert an, dass ich keine Ahnung habe, ob ich diesen Code in etwa einem Monat verarbeiten kann.
Also was ich wissen will ist: Gibt es eine Art Programmierungsmuster, das zeigt, wie Generatoren richtig miteinander verkettet werden?
zuerst: vereinfachen dies: 'read_data (file_location)' => 'open (file_location)' wird genau das gleiche tun. –
Dies ist eine vereinfachte Version meines tatsächlichen Codes. Es macht viel mehr im wirklichen Leben. – Arne
@ArneRecknagel Das ist im Grunde die Python-Map (das gilt für Python 3, wo 'map' faul ist). Transformationsfunktionen würden dann für _elements_ des Datensatzes gelten, nicht für den vollständigen Satz, da dies der Generator ist. Für ein nicht eingebautes Tool können Sie sich ['RxPY'] (https://github.com/ReactiveX/RxPY) ansehen. –