возврат лямбда-функции из другой функции в python - PullRequest
0 голосов
/ 10 ноября 2018

эй, я пытаюсь понять, как работает лямбда-функция в python. Я получил общее представление об этом, но я не совсем понимаю, как работает интерпретатор в следующем коде:

def foo(f):
    return lambda y:(f(y+2))

print(foo(lambda x:x**2)(3))

как переводчик узнает, что f это x:x**2? это локальное связывание или значения интерпретатора f, а затем возвращение лямбда-функции в глобальную среду?

1 Ответ

0 голосов
/ 10 ноября 2018

Есть два ключевых момента, которые помогут вам понять, что здесь происходит.

Во-первых, в python практически все является объектом. Четные функции

"Вызываемый объект - это объект, который может принимать некоторые аргументы (также называемые параметрами) и, возможно, возвращать объект (часто кортеж, содержащий несколько объектов).

Функция - это самый простой вызываемый объект в Python, но есть и другие, такие как классы или определенные экземпляры классов. «

Остальное - просто базовая обработка параметров / аргументов, которую выполняют функции.

def add_two(b):
    return b + 2
add_two(7)
a = 3
add_two(a)

Здесь b назначается объект 7 при вызове функции, и это то же самое, что b = 7. Когда мы вместо этого передаем a внутренне, то же самое происходит снова. b = a, который связывает b с объектом (значения 3. помните грубое правило, все является объектом), на который ссылался a. То же самое происходит, когда вы передаете функцию object .

Надеюсь, это поможет.

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