Изучаю Python здесь
w3schools
Там есть следующий пример для вычисления удвоенного числа:
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11))
Я не понимаю до конца этот пример.
Программа доходит до строки print(mydoubler(11)). Чтобы напечать результат выполнения функции mydoubler, программа вызывает эту функцию с аргументом 11, для этого программа идёт к строке mydoubler = myfunc(2).
В строке mydoubler = myfunc(2) вызывается функция mydoubler, которая ссылается на другую функцию — myfunc, с аргументом 2.
Функция myfunc в свою очередь идёт к блоку кода
def myfunc(n):
return lambda a : a * n
и передаёт аргумент 2 в определение функции def myfunc(n):
Блок кода
def myfunc(n):
return lambda a : a * n
содержит третью функцию, лямбда-функцию. Эта лямбда стоит после оператора return функции myfunc, то есть myfunc возвратит то, что вычислится в результате выполнения лямбды.
Лямбда принимает содержит "a" в качестве параметра, а возвращает результат умножения "a" на "n", где "n" — параметр myfunc.
Я не могу понять, как "a" в лямбде соотносится с аргументом mydoubler. Когда посмотрел, как выполняется программа, то я понял, что "a" и аргумент mydoubler — это одно и то же. Как программа понимает, что 11 надо поместить в "a" лямбды?
Спасибо заранее.