выход из глубины вложенных циклов
Вопрос, возможно банальный, но я еще не дорос до уровня мега-профи, потому он меня сегодня озаботил. Просьба сильно не подкалывать ;-).
Если имеем несколько вложенных циклов (как миниммум 2) и есть нужда принудительно выйти из самого внутреннего, то как при этом лучше поступать? Поскольку break работает только для одного цикла, а goto -- это страшнейшее табу (от него волосы на руках растут), то что же остается? Использовать специальные флаги -- не красиво как-то. Не по-питонвоски это, что-ли...
Вспомнив, что генерация исключения -- есть скрытое и косвенное goto, сделал через генерацию своего собственного исключения (raise LoopEnd), а циклы заключил в конструкцию:
А теперь вот и думаю, а какие еще существуют способы, хорошие и красивые?
Кстати, помнится мне 1 апреля прошлого года был анонсирован рецепт goto для питона. Ну или что-то в таком духе. :-)
Если имеем несколько вложенных циклов (как миниммум 2) и есть нужда принудительно выйти из самого внутреннего, то как при этом лучше поступать? Поскольку break работает только для одного цикла, а goto -- это страшнейшее табу (от него волосы на руках растут), то что же остается? Использовать специальные флаги -- не красиво как-то. Не по-питонвоски это, что-ли...
Вспомнив, что генерация исключения -- есть скрытое и косвенное goto, сделал через генерацию своего собственного исключения (raise LoopEnd), а циклы заключил в конструкцию:
try:
...
except LoopEnd:
pass
А теперь вот и думаю, а какие еще существуют способы, хорошие и красивые?
Кстати, помнится мне 1 апреля прошлого года был анонсирован рецепт goto для питона. Ну или что-то в таком духе. :-)
