h = lambda x: x+1
- это функция, которая возвращает на 1 больше, чем переданное ей значение.
Это эквивалентно:
def h(x):
return x+1
f = lambda x, y: y(y(x))
- это функция, которая принимает значение и функцию в качестве пары аргументов и оценивает функцию (функцию (значение)).
Это эквивалентно:
def f(x, y):
return y(y(x))
g = lambda x: lambda y: x(y)
- функция декоратора, которая возвращает новую функцию на основе переданной ей функции.
Это эквивалентно:
def g(x):
def new_func(y):
return x(y)
return new_func
заданные лямбда-выражения,
f = lambda x, y: y(y(x))
g = lambda x : lambda y: x(y)
выражение для оценки
f(lambda x: x+1, g) (4)
это уменьшает до
=> g(g(lambda x: x+1)) (4)
, теперь обратите внимание, что g (g (лямбда-x: x + 1)) возвращает функцию g (лямбда-x: x + 1)
=> g(lambda x: x+1) (4)
теперь здесьg (лямбда x: x + 1) снова возвращает функцию (x + 1)
=> (x+1) (4)
, это оценивается как 4 + 1, т.е. 5
=> 5