Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2017 11:42:07

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

Доброго времени суток.

Есть примерно такой код:

 def func_ext():
    ... # какой-то код
    def func_int():
        ... # какой-то код
        return
    func_int()
    ... # какой-то код
При выполнении return происходит выход из func_int() в func_ext(). А можно ли как-то сделать чтобы при выходе из func_int() выходить сразу же на самый верхний уровень, чтобы прекращалось бы выполнение и func_ext()?



Офлайн

#2 Март 27, 2017 11:47:19

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

 return func_int()

Офлайн

#3 Март 27, 2017 12:51:04

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

Чего-то не получается.

 def func_ext():
    print('ext1')
    
    def func_int():
	print('int')
        return func_int()
        
    func_int()
    print('ext 2')
    
func_ext()

Пишет:
return func_int()
^
IndentationError: unindent does not match any outer indentation level



Офлайн

#4 Март 27, 2017 12:55:15

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

 def func_ext():
    print('ext1')
    
    def func_int():
	print('int')
        return func_int()
        
    print('ext 2')
    return func_int()
    
func_ext()

Офлайн

#5 Март 27, 2017 13:07:37

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

А, мысль понял. Вот заработавший код:

 def func_ext():
    print('ext1')
    
    def func_int():
        a = 1
        print('int')
        return a
        
    return func_int()
    print('ext 2')
    
func_ext()

Спасибо.



Офлайн

#6 Март 27, 2017 13:10:05

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

Код неверный. Третий принт не отработает никогда

Офлайн

#7 Март 27, 2017 15:36:04

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

4kpt_V
Третий принт не отработает никогда
Да ладно, это мелочи. Мне главное принцип надо было понять.



Офлайн

#8 Март 27, 2017 17:12:29

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Надо выйти из вложенной функции на самый верхний уровень. Как?

Бросать кастомное исключение если и ловить его на необходимом уровне.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version