← Все вопросы

Можно ли вернуть функцию из функции и зачем это нужно?

Задан 16 месяцев назад290 просмотров2 ответа
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

Да, законно.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект