Ich habe einige Anwendungsfälle, in denen ich Generatorfunktionen ausführen muss, ohne sich um die erhaltenen Elemente zu kümmern.
Ich kann sie nicht generatorfreie Funktionen machen, weil ich in anderen Anwendungsfällen sicherlich die erhaltenen Werte brauche.Einfachere Möglichkeit, eine Generatorfunktion zu betreiben, ohne sich um die Elemente zu kümmern
Ich benutze derzeit eine triviale Self-made-Funktion, um die Generatoren zu erschöpfen.
def exhaust(generator):
for _ in generator:
pass
Ich fragte mich, ob es einen einfacheren Weg, das zu tun, was ich vermisst habe?
bearbeiten einem Anwendungsfall Folgende:
def create_tables(fail_silently=True):
"""Create the respective tables."""
for model in MODELS:
try:
model.create_table(fail_silently=fail_silently)
except Exception:
yield (False, model)
else:
yield (True, model)
In einem bestimmten Kontext, ich kümmere mich um die Fehler und Erfolgswerte ...
for success, table in create_tables():
if success:
print('Creation of table {} succeeded.'.format(table))
else:
print('Creation of table {} failed.'.format(table), file=stderr)
... und in einigen Ich will nur die laufen Funktion "blind":
exhaust(create_tables())
* Warum? * Was ist der Zweck solcher Funktionen? Es riecht nach einem größeren Designproblem, geschweige denn nach einem XY-Problem. – DeepSpace
Das scheint schon ziemlich einfach zu sein, nein? –
Aktualisiert mit tatsächlichen Anwendungsfall. –