Лямбда-функции потрясающие. Они позволяют определять встроенные функции высшего порядка. Общий формат lambda args: expression
. В этом случае x
- это аргумент, передаваемый в лямбда-функцию. Поскольку make_adder
возвращает лямбда-функцию, все, что вы передаете в make_adder
, устанавливается как n
. Поэтому, когда вы передаете make_adder(2)
, вы получаете лямбда-функцию, которая добавляет 2 к аргументу (x
).
Разложение исходного фрагмента:
def make_adder(n):
return lambda x: x + n
plus_2 = make_adder(2) # returns lambda x: x + 2
plus_2(5) # executes lambda expression, x + 2 with x=5
Начиная с нуля:
5 + 2 # 7
plus_two_fn = lambda x: x + 2 # Add 2 when you call plus_two_fn(x)
plus_two_fn(3) # returns 5 (3 + 2)
def plus_num_fn(num):
return lambda x: x + n # Allow you to define plus "any" number
plus_one_fn = plus_num_fn(1) # lambda x: x + 1
plus_one_fn(2) # returns 3 (2 + 1)