def outer():
def inner():
return "OK"
return inner
f = outer()
print(f())
Функция outer
возвращает функцию inner
.
Когда вызывается f()
(где f
это результат вызова outer()
), выполняется функция inner
.
Функция inner
возвращает строку "OK".
Следовательно, на экран будет выведено "OK".
Разбор задачи:
Эта задача демонстрирует концепцию замыкания (closure) в Python.
Объяснение кода:
outer()
определяет внутреннюю функцию inner()
.inner()
просто возвращает строку "OK".outer()
возвращает функцию inner
(а не результат её вызова). Это ключевой момент замыкания. Функция `inner` сохраняет доступ к области видимости, в которой она была определена (в данном случае, область видимости `outer`).outer()
, и возвращённая функция (inner
) присваивается переменной f
.f()
, что эквивалентно вызову inner()
.Результат выполнения:
Код выведет на экран:
OK
Замыкание:
Замыкание возникает, когда внутренняя функция (inner
) захватывает переменные из лексического окружения внешней функции (outer
). В данном примере inner
захватывает окружение outer
, хотя в данном конкретном случае она не использует какие-либо переменные из этого окружения. Замыкания позволяют "запомнить" состояние внешней функции после того, как она завершила свою работу.