old_stalin
@old_stalin

Можно ли выйти сразу из всех функций?

Нужно что бы он не напечатал цифру 3, при этом вышел из всех функций, нужног что то поставить вместо return
def func1():
    print(1)
    func2()
    print(3)
def func2():
    print(2)
    return

if __name__ == "__main__":
    func1()
  • Вопрос задан
  • 82 просмотра
Решения вопроса 2
@Vindicar
Вариант 1: Пусть функции возвращают значение типа bool, если оно истинное - то вызвавшая функция тоже должна прерваться.

Вариант 2: выбросить исключение, поймать его там, где нужно остановить цепочку выходов. Имеет смысл описать своё исключение для такого, это несложно.

Вариант 3:
import sys
sys.exit()
Завершает работу скрипта. По факту, то же что и вариант 2, так как sys.exit() выбрасывает неотлавливаемое исключение.
Ответ написан
shurshur
@shurshur
Подобный вопрос: Прерывание рекурсии python 3?

Однако это плохой способ, говорящий о плохой архитектуре программы. Исключения лучше использовать для ловли исключительных ситуаций, а подобные задачи решать иначе. Например, возвращать из функций результат или хотя бы признак успешного выполнения, который проверять на всех уровнях и передавать выше. А лучше подумать над тем, чтобы программа была по-другому устроена, в зависимости от задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы