Я понимаю, что такое лямбда-функции в Python, но я не могу найти, что означает "привязка lambda", путем поиска документов Python. Ссылка, чтобы прочитать об этом, была бы замечательной. Тривиальный объясненный пример будет еще лучше. Спасибо.
Что такое "привязка lambda" в Python?
Ответ 1
Во-первых, общее определение:
Когда инструкция программы или функции, текущие значения формальные параметры сохраняются (на стек) и в рамках утверждения, они связаны с значения фактических аргументов, сделанных в вызов. Когда выражение вышли, исходные значения этих формальные аргументы восстанавливаются. Эта протокол полностью рекурсивный. Если внутри тело заявления, что-то сделано, что приводит к формальным параметрам снова привязываться к новым значениям, схема лямбда-связывания гарантирует, что все это произойдет в упорядоченном образом.
Теперь есть отличный пример 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].... "
Ответ 2
Я никогда не слышал этого термина, но одним из объяснений может быть хакер по умолчанию, используемый для назначения значения непосредственно параметру лямбда. Использование примера Swati:
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
Ответ 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