Es gibt eine sehr pythonische Möglichkeit, diesen Ausdruck zu schreiben, ohne explizit einen try-except-Block für a zu schreiben StopIteration
:
# some_iterable is some collection that can be iterated over
# e.g., a list, sequence, dict, set, itertools.combination(...)
for value in some_iterable:
print(value)
Sie können sich über die relevanten PEPs 234 255 informieren, wenn Sie mehr darüber wissen möchten, warum sie StopIteration
eingeführt wurden und welche Logik hinter Iteratoren steckt.
Ein allgemeines Prinzip in Python besteht darin, eine Möglichkeit zu haben, etwas zu tun (siehe import this
), und vorzugsweise eine schöne, explizite, lesbare und einfache, die die pythonische Methode erfüllt. Ihr entsprechender Code ist nur erforderlich, da Python Iteratoren keine hasNext
Member-Funktion gibt. Es ist vorzuziehen, die Iteratoren direkt durchzugehen (und wenn Sie etwas anderes tun müssen, um es einfach zu lesen und eine Ausnahme zu erkennen).
Dieses automatische Abfangen einer StopIteration
Ausnahme am Ende eines Iterators ist sinnvoll und entspricht dem EOFError
Auslösen, wenn Sie nach einem Dateiende lesen.