Что такое функция внутри функции в django/python

Я хочу знать, какова основная идея функции внутри функции в djanggo?, что-то вроде этого примера.

def partition_by_mod(base):
    def func(n):
        return n % base
    return staticmethod(func)

когда я вызываю эту функцию следующим образом test = partition_by_mod(8), поэтому мне интересно, откуда берется "n".

спасибо ~

что такое основная идея функция внутри функции в djanggo?

Это то же самое, что и функция, определенная в любом другом месте, но она доступна по имени только внутри внешней функции, и она закрывает переменные (такие как base) области видимости, в которой она определена, так что они косвенно доступны тому, кто вызывает функцию. Ваш конкретный пример можно заменить на лямбду:

def partition_by_mod(base):
    return staticmethod(lambda n: n % base)

когда я вызываю эту функцию следующим образом test = partition_by_mod(8), поэтому мне интересно, откуда берется "n".

Аргумент предоставляется кодом, который фактически вызывает функцию. Обратите особое внимание на то, что

    staticmethod(func)

не вызывает func, а передает func себя в качестве аргумента, предположительно с мыслью, что staticmethod вызовет его. Иногда это называют "функцией обратного вызова". Вызов функции можно распознать по списку аргументов в круглых скобках, который требуется даже при нулевых аргументах. Если и когда staticmethod вызовет функцию, staticmethod обязан предоставить необходимый аргумент.

Вернуться на верх