Вложенные области и лямбды
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
,