enempluie
@enempluie
Познающий

Как вызывать функцию, которая находится в теле другой функции?

Допустим у меня есть программа:
def foo():
    # code
    def foo_in_foo():
        # code

Каким образом можно вызвать функцию foo_in_foo во внешней области кода?
# что-то вроде того:
foo.foo_in_foo()
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
mututunus
@mututunus
Backend developer (Python, Golang)
Никак. Вы же не можете обратиться к локальной переменной функции, а это по сути одно и то же.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DDDsa
@DDDsa
Почему же никак, можно вытащить ее наружу через глобальную переменную.
Только не запоминайте этот подход, это ужасный код:

>>> def foo():
... 	print('executing foo()')
... 	def foo_in_foo():
... 		print('executing foo_in_foo()')
... 	global inner
... 	inner = foo_in_foo
... 
>>> foo()
executing foo()
>>> inner
<function foo.<locals>.foo_in_foo at 0x07BBD1E0>
>>> inner()
executing foo_in_foo()
Ответ написан
Комментировать
@abcd0x00
Сделать можно, но делать так не надо
>>> def foo():
...     print('in foo')
...     def foo_in_foo():
...         print('in foo_in_foo')
...     foo.foo_in_foo = foo_in_foo
... 
>>> foo()
in foo
>>> foo.foo_in_foo()
in foo_in_foo
>>>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы