Вложенные области и лямбды - PullRequest
3 голосов
/ 05 января 2010
def funct():
    x = 4
    action = (lambda n: x ** n)
    return action

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

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

Ответы [ 2 ]

5 голосов
/ 05 января 2010

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

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

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

3 голосов
/ 05 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...