← Все вопросы
Можно ли вернуть функцию из функции и зачем это нужно?
7
Видел код, где функция в return отдаёт не число, а другую функцию. Это вообще законно? И в каких ситуациях так делают на практике?
2 ответа
13
✓ Принятый ответ — помог автору
Да, абсолютно законно — функции в Python обычные объекты, их можно возвращать. Частый приём: «фабрика функций», которая по параметрам собирает специализированную функцию.
def power_of(n):
def inner(x):
return x ** n
return inner
square = power_of(2)
cube = power_of(3)
square(5) # 25
cube(2) # 8
square и cube помнят своё n через замыкание. На практике так делают декораторы, настраиваемые валидаторы, ключи для сортировки и т.п.
3
Да, законно.
Ваш ответ
Войдите, чтобы ответить на вопрос.