Вопрос

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

Это было полезно?

Решение

Сначала общее определение:

Когда выполняется оператор программы или функции, текущие значения формальных параметров сохраняются (в стеке), а в рамках оператора они связаны со значениями фактических аргументов, сделанных в вызове.Когда утверждение выходит, исходные значения этих формальных аргументов восстанавливаются.Этот протокол полностью рекурсивный.Если в рамках тела утверждения что-то сделано, что приводит к тому, что формальные параметры снова будут связаны, с новыми значениями, схема связывания Lambda гарантирует, что все это произойдет упорядоченным образом.

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

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

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

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

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

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

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

Где вы видели использование этой фразы?

«Привязка» в 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top