Wie debugge ich Code, der Generatoren und Iteratoren verwendet? Ich fand, dass das Hinzufügen einer for
Schleife mit print
Anweisungen den Generator/Iterator verbraucht und daher den Rest des Codes durchbricht. Ist es möglich, den "Inhalt" eines Generators/Iterators zu prüfen, ohne die Elemente zu verbrauchen?Debug-Generatoren und Iteratoren
Genauer gesagt, ich habe so etwas wie dies:
result = map(func, x)
Jetzt will ich sehen, was result
ist. Ich möchte auch den zurückgegebenen Wert sehen, indem ich eine Funktion für jedes Element in result
anwende. In meinem eigentlichen Code, erhalte ich das Element in result
die den Minimalwert dieser Funktion gibt:
best = min(result, key=my_key)
Jetzt min()
ist sehr praktisch, aber ich bin immer falsches Verhalten und müssen herausfinden, warum. Welche Tools kann ich verwenden, um so etwas zu debuggen?
p.s. Ich benutze PyCharm. Ich bin ziemlich zufrieden mit dem interaktiven Debugger, kann aber immer noch nicht herausfinden, wie man alles sieht, was hier vor sich geht.