Domanda

Comprendo quali sono le funzioni lambda in Python, ma non riesco a trovare il significato di "associazione lambda" cercando nei documenti di Python. Un link per leggerlo sarebbe fantastico. Un banale esempio spiegato sarebbe ancora meglio. Grazie.

È stato utile?

Soluzione

Innanzitutto, una definizione generale:

  

Quando un'istruzione di programma o funzione   viene eseguito, i valori correnti di   i parametri formali vengono salvati (sul   stack) e nell'ambito del   dichiarazione, sono legati al   valori degli argomenti reali inseriti in   la chiamata. Quando la dichiarazione è   usciti, i valori originali di quelli   gli argomenti formali vengono ripristinati. Questo   il protocollo è completamente ricorsivo. Se dentro   il corpo di una dichiarazione, qualcosa lo è   fatto che causa i parametri formali   da rileggere, a nuovi valori, il   Lo schema di associazione lambda lo garantisce   tutto ciò accadrà in modo ordinato   modo.

Ora, c'è un eccellente esempio di pitone in una discussione qui :

" ... esiste solo un'associazione per x : fare x = 7 modifica semplicemente il valore nell'associazione preesistente. Ecco perché

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

restituisce due funzioni che restituiscono entrambe 7; se ci fosse una nuova associazione dopo x = 7 , le funzioni restituiranno valori diversi [supponendo che tu non chiami foo (7), ovviamente. Supponendo anche nested_scopes] .... "

Altri suggerimenti

Non ho mai sentito quel termine, ma una spiegazione potrebbe essere il parametro "quot" predefinito " l'hack usato per assegnare un valore direttamente al parametro lambda. Utilizzando l'esempio di 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

Dove hai visto la frase usata?

" Binding " in Python generalmente si riferisce al processo mediante il quale un nome di variabile finisce per puntare a un oggetto specifico, sia per assegnazione o passaggio di parametri o in altro modo, ad es .:

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

Quindi immagino che "rilegatura lambda" si riferisce al processo di associazione di una funzione lambda a un nome di variabile, o forse l'associazione dei parametri denominati a oggetti specifici? C'è una buona spiegazione del legame nel riferimento linguistico, a http://docs.python.org /ref/naming.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top