Вложенные области и лямбды

def funct():
    x = 4
    action = (lambda n: x ** n)
    return action

x = funct()
print(x(2)) # prints 16

... я не совсем понимаю, почему 2 назначается автоматически?

2 ответа

Решение

n является аргументом анонимной функции, возвращаемой funct, Точно эквивалентное определение funct является

def funct():
    x = 4
    def action(n):
        return x ** n
    return action

Эта форма имеет больше смысла?

Он не присваивается "автоматически": он присваивается очень явно и неавтоматически, если вы передаете его как фактический аргумент, соответствующий n параметр. Это сложный способ установить x почти идентичен (нетто x.__name__ и другие незначительные интроспективные детали) def x(n): return 4**n,

Другие вопросы по тегам