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

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

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

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


person eozzy    schedule 05.01.2010    source источник
comment
[новичок] и [лямбда]. Учтите, что лямбды не для новичков, и пропустите их. Игнорируй их. Они тебе не нужны.   -  person S.Lott    schedule 05.01.2010


Ответы (2)


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

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

Имеет ли смысл эта форма?

person Dale Hagglund    schedule 05.01.2010

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

person Alex Martelli    schedule 05.01.2010