Что “лямбда связывает” в Python?

[g1] [g0] YapDi [/g0] является относительно новым модулем Python, который появился в Hacker News. Выглядит довольно полезно, может быть использовано для преобразования скрипта Python в режим демона изнутри скрипта. [/G1]
11
задан Anonymous 2 October 2008 в 04:14
поделиться

3 ответа

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

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

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

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

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

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

14
ответ дан 3 December 2019 в 04:54
поделиться

Я никогда не слышал, что термин, но одно объяснение мог быть "параметром по умолчанию" взлом, используемый для присвоения значения непосредственно параметру лямбды. Используя пример 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
8
ответ дан 3 December 2019 в 04:54
поделиться

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

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

1
ответ дан 3 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: