Frage

Ich verstehe, was in Python Lambda-Funktionen sind, aber ich kann nicht finden, was die Bedeutung von „Lambda-Bindung“ durch Durchsuchen der Python-Dokumentation ist. Ein Link zu lesen über, es wäre toll. Ein triviales Beispiel erklärt wäre noch besser. Danke.

War es hilfreich?

Lösung

Zuerst wird eine allgemeine Definition:

  

Wenn ein Programm oder Funktionsanweisung   ausgeführt wird, die aktuellen Werte von   formale Parameter werden gespeichert (auf dem   Stack) und in den Rahmen der   Anweisung, werden sie an das gebunden   Werte der tatsächlichen Argumente in   der Anruf. Wenn die Aussage   verlassen, werden die ursprünglichen Werte derjenigen   formale Argumente werden gestellt. Diese   Protokoll ist vollständig rekursiv. wenn innerhalb von   der Körper einer Aussage, etwas   getan, dass die formalen Parameter verursacht   gebunden wieder, um neue Werte zu, die   Lambda-bindende Regelung gewährleistet, dass   dies alles in einem geordneten passieren   Art und Weise.

Nun, es ist eine ausgezeichnete Python Beispiel in einer Diskussion hier :

“... es ist nur eine Bindung für x. Tun x = 7 ändert nur den Wert in die bereits bestehende Bindung Deshalb

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

gibt zwei Funktionen, die beide 7 zurückkehren; wenn es eine neue Bindung nach dem x = 7 war, würden die Funktionen unterschiedliche Werte zurückgeben [vorausgesetzt, Sie rufen Sie nicht foo (7), natürlich. Auch unter der Annahme nested_scopes] .... "

Andere Tipps

Ich habe noch nie diesen Begriff gehört, aber eine Erklärung dafür könnte die „Standardparameter“ sein Hack verwendet, um eine Lambda der Parameter einen Wert direkt zuweisen. Mit Swati des Beispiel:

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

Wenn Sie die Phrase verwendet gesehen haben?

„Bindung“ in Python bezieht sich allgemein auf den Prozess, durch den ein Variablenname auf ein bestimmtes Objekt zeigt endet, sei es durch Übertragung oder Übergabe von Parametern oder andere Mittel, z.

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

So würde ich vermuten, dass „Lambda-Bindung“ auf das Verfahren bezieht sich eine Lambda-Funktion auf einen Variablennamen zu binden, oder vielleicht auf bestimmte Objekte seine benannte Parameter verbindlich? Es ist eine ziemlich gute Erklärung in der Sprachreferenz der Bindung an http://docs.python.org /ref/naming.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top