Існує дуже пітонічний спосіб записати цей вираз без явного написання випробувального блоку для 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)
Ви можете ознайомитися з відповідними PEPs 234 255, якщо хочете дізнатися більше, чому StopIteration
було введено та логіку, що стоїть за ітераторами.
Загальний принцип в пітоні - це мати один спосіб зробити щось (див. import this
), І бажано його красиве, явне, читабельне та просте, що задовольняє пітонічний метод. Ваш еквівалентний код необхідний лише тому, що python не дає ітераторам hasNext
функції члена; віддаючи перевагу людям просто перебирати через ітератори безпосередньо (а якщо вам потрібно зробити щось інше, просто спробуйте прочитати його та знайти виняток).
Це автоматичне StopIteration
вилучення виключення в кінці ітератора має сенс і є аналогом EOFError
піднятого, якщо ви читаєте минулий кінець файлу.