Існує дуже пітонічний спосіб записати цей вираз без явного написання випробувального блоку для 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піднятого, якщо ви читаєте минулий кінець файлу.