Что такое «лямбда-привязка» в Python?

Я понимаю, что такое лямбда-функции в Python, но не могу найти, что означает «привязка лямбда», путем поиска в документации Python. Ссылка, чтобы прочитать об этом, было бы здорово. Тривиальный объясненный пример был бы еще лучше. Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
11
0
5 209
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Где вы видели используемую фразу?

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

a = dict(foo = "bar", zip = "zap", zig = "zag") # binds a to a newly-created dict object
b = a # binds b to that same dictionary

def crunch(param):
  print param

crunch(a) # binds the parameter "param" in the function crunch to that same dict again

Итак, я бы предположил, что «привязка лямбда» относится к процессу привязки лямбда-функции к имени переменной или, возможно, привязки ее именованных параметров к конкретным объектам? В Справочнике по языку есть довольно хорошее объяснение привязки по адресу http://docs.python.org/ref/naming.html

Ответ принят как подходящий

Во-первых, общее определение:

When a program or function statement is executed, the current values of formal parameters are saved (on the stack) and within the scope of the statement, they are bound to the values of the actual arguments made in the call. When the statement is exited, the original values of those formal arguments are restored. This protocol is fully recursive. If within the body of a statement, something is done that causes the formal parameters to be bound again, to new values, the lambda-binding scheme guarantees that this will all happen in an orderly manner.

Теперь есть отличный пример python в обсуждении здесь:

"... для x существует только одна привязка: выполнение x = 7 просто изменяет значение в ранее существовавшей привязке. Вот почему

def foo(x): 
   a = lambda: x 
   x = 7 
   b = lambda: x 
   return a,b

возвращает две функции, обе возвращающие 7; если после x = 7 была новая привязка, функции возвращали бы другие значения [конечно, при условии, что вы не вызываете foo (7). Также предполагается nested_scopes] .... "

Я никогда не слышал этот термин, но одним из объяснений может быть взлом «параметра по умолчанию», используемый для присвоения значения непосредственно параметру лямбда. Используя пример Свати:

def foo(x): 
    a = lambda x=x: x 
    x = 7 
    b = lambda: x 
    return a,b

aa, bb = foo(4)
aa() # Prints 4
bb() # Prints 7

Другие вопросы по теме