Как вернуться на определённую строку в коде? python
Как вернуться на определённую строку кода и чтобы при этом не завершался цикл. Без def.
Ответы (2 шт):
Питон высоко структурированный язык, без возможности просто обозначить какую-то команду для прыжка в ее с другой части программы.
Это сделано сознательно, чтобы такой возможности не было.
Когда вам это нужно, вам приходит подумать, если вам ясно, что от вашей программы ожидаете. Впервые стратегия, и только после ней тактика.
Например вы при каком-то условии хотите повторить часть с команды print(«2») :
(Команда continue в вашем коде излишня.)
Аналог goto ? Да действительно, встроенных инструментов, полностью реализующих функционал goto , нет (почему так сделано — отдельный вопрос). Однако есть огромное количество идиом, позволяющих частично или полностью эмулировать это.
-
; ;
- выбор ключа в словаре;
- динамическое програмирование и т.п.
-
; ;
- встроенные высокоуровневые функции (модуль itertools ) и т.п.
Есть и другие варианты, более специфичные. Также всегда есть возможность именовать одинаковые участки кода с помощью функций.
Если все-таки нужно написать именно аналог goto , то вот варианты:
- написать функцию, меняющую байткод функции с goto (а конкретно, добавляющую где надо opcode JUMP_ABSOLUTE );
- написать свою кодировку с goto , ассоциированный декодер, зарегистрировать его, и писать в начале скрипта #*- coding: my_goto_codec -*- ;
- написать функцию, наподобие exec , реализующую анализ инструкций вручную.
Как видите, гораздо проще пользоваться встроенными средствами, нежели городить трёхэтажные велосипеды с сомнительной полезностью. Лично я знаю только одну проблему, которую достаточно трудно решить подручными средствами в питоне — break из всех вложенных циклов в самое начало. Пожалуй, это единственное место, где goto был бы полезен.
Как вернуться на определённую строку в коде? python
Как вернуться на определённую строку кода и чтобы при этом не завершался цикл. Без def.
Аналог goto ? Да действительно, встроенных инструментов, полностью реализующих функционал goto , нет (почему так сделано — отдельный вопрос). Однако есть огромное количество идиом, позволяющих частично или полностью эмулировать это.
-
; ;
- выбор ключа в словаре;
- динамическое програмирование и т.п.
-
; ;
- встроенные высокоуровневые функции (модуль itertools ) и т.п.
Есть и другие варианты, более специфичные. Также всегда есть возможность именовать одинаковые участки кода с помощью функций.
Если все-таки нужно написать именно аналог goto , то вот варианты:
- написать функцию, меняющую байткод функции с goto (а конкретно, добавляющую где надо opcode JUMP_ABSOLUTE );
- написать свою кодировку с goto , ассоциированный декодер, зарегистрировать его, и писать в начале скрипта #*- coding: my_goto_codec -*- ;
- написать функцию, наподобие exec , реализующую анализ инструкций вручную.
Как видите, гораздо проще пользоваться встроенными средствами, нежели городить трёхэтажные велосипеды с сомнительной полезностью. Лично я знаю только одну проблему, которую достаточно трудно решить подручными средствами в питоне — break из всех вложенных циклов в самое начало. Пожалуй, это единственное место, где goto был бы полезен.
Как перейти к определённой строчке кода в python?
А вообще, надо бы учитывать количество попыток и ловить конкретное, а не общее исключение.
- Вконтакте


Сделать можно, но уверены ли вы, что тут нужен именно try/except? Может, проверять условиями корректность работы?
Если б вы скинули код, то можно было бы подсказать.
- Вконтакте

У меня есть вот такой код:
И иногда в сайт может зависнуть и я не могу знать где это произойдёт, но перезагрузка помогает
Перейти к определенной строке в Python?
Я хочу перейти к строке 34 в файле .txt и прочитать ее. Как бы вы сделали это на Python?
задан 14 марта ’10, 22:03

Обратите внимание, что если вы следуете одному из многих решений, открывающих ваш файл, вы хотите сделать это с помощью with блок (или try / finally в версии до 2.5), чтобы ваш файл был закрыт. Многие решения могут вызывать исключения, например, если ваш файл неожиданно короче 34 строк. — Mike Graham
stackoverflow.com/questions/620367/… python: как перейти к определенной строке в огромном текстовом файле? — jfs
7 ответы
Используйте стандартную библиотеку Python линейный кэш модуль:
должен делать именно то, что вы хотите. Вам даже не нужно открывать файл — linecache делает все за вас!
ответ дан 15 мар ’10, в 01:03
+1 за красивое элегантное решение, и мы (или, по крайней мере, я) узнали что-то новое. — Джастин Этье
хорошо, но если в других строках требуется другая обработка, открытие файла все равно необходимо. — ghostdog74
@ghostdog, если «обработка» идет на специально пронумерованных строках, просто продолжайте использовать linecache — как следует из названия, он кеширует для вас вещи. Странный микс, когда к некоторым строкам обращаются как пронумерованные, а к другим нужно зацикливаться, можно обращаться по-разному, но такие странные миксы вряд ли являются обычным вариантом использования. — Алекс Мартелли
+1 ты гений Алекс. Я узнаю по крайней мере 2 новые вещи от вас каждый день: D — Пратик Деогаре