Rozumiem, jakie są funkcje lambda w Pythonie, ale nie mogę znaleźć znaczenia "wiązania lambda", przeszukując dokumentację w języku Python. Link do przeczytania o tym byłby świetny. Trywialny wyjaśniony przykład byłby jeszcze lepszy. Dziękuję.Co to jest "wiązanie lambda" w Pythonie?
Odpowiedz
pierwszy, ogólnej definicji:
Gdy program lub funkcja oświadczenie jest wykonywany, bieżące wartości formalnych parametrów są zapisywane (na stosie ) i w zakresie oświadczenia są one powiązane z wartościami rzeczywistymi argumentów podanych w wywołania. Po zakończeniu instrukcji zostaną przywrócone oryginalne wartości argumentów formalnych . Ten protokół jest w pełni rekurencyjny. Jeżeli w ciągu ciało oświadczeniu coś zrobić, że powoduje formalne parametry być ponownie związany, do nowych wartości, lambda wiążących gwarancji, że schemat ten będzie wszystko zdarzają się w sposób uporządkowany sposób.
Teraz jest doskonały python example in a discussion here:
”... istnieje tylko jeden wiążący dla x
: robi x = 7
prostu zmienia wartość w istniejących wcześniej wiązania Dlatego
def foo(x):
a = lambda: x
x = 7
b = lambda: x
return a,b
.
zwraca dwie funkcje, które zwracają 7, jeśli pojawiły się nowe wiązania po x = 7
, funkcje zwróciłyby różne wartości [zakładając, że nie nazwiesz foo (7), oczywiście zakładając również nested_scopes] .... "
Gdzie widziałeś używane wyrażenie?
„Wiązanie” w Pythonie ogólnie odnosi się do procesu, w którym zmienna nazwa kończy się skierowaną do określonego przedmiotu, czy to przez przyporządkowanie lub parametrów przejścia lub w inny sposób, np
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
więc byłoby zgadnij, że "powiązanie lambda" odnosi się do procesu wiązania funkcji lambda do nazwy zmiennej, czy też wiązania ich nazwanych parametrów do konkretnych obiektów? Jest to dość dobre wyjaśnienie wiążące w skorowidzu języka, w http://docs.python.org/ref/naming.html
Nigdy nie słyszałem tego terminu, ale jednym wyjaśnieniem może być "domyślny parametr", który służy do przypisania wartości bezpośrednio do parametru lambda. Na przykładzie 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
Skąd się wzięły 4? – mattbasta
+1: Jestem pewien, że ta informacja to inne miejsca, ale to było dokładnie to, czego potrzebowałem ... wielki uścisk !!! –
- 1. Co to jest lambda w PHP?
- 2. Mylące [...] Lista w Pythonie: Co to jest?
- 3. Korzystanie lambda w Pythonie
- 4. Co to jest func_dict?
- 5. Co to jest składnia VB.NET do używania List.FindAll() z lambda?
- 6. Co to jest analogowy dla .Net InvalidOperationException w Pythonie?
- 7. co to jest kodek dla filmów mp4 w pythonie OpenCV
- 8. Co to jest odpowiednik Groovy'ego dla dir() w Pythonie?
- 9. Co to jest wątek os.chdir i mkdir w pythonie?
- 10. Co to jest zmq.ROUTER i zmq.DEALER w pythonie zeromq?
- 11. Co to jest konkretna implementacja?
- 12. Kiedy jest "to" zrobione w lambda?
- 13. Co to jest token =>?
- 14. Python: Co to jest nagłówek?
- 15. Co to jest jajko Python?
- 16. Co to jest odpowiednik "gem" w python?
- 17. Co to jest odwrotnością date.toordinal() w python?
- 18. Co to jest Serializable? Co to znaczy?
- 19. Co to jest język kleju?
- 20. Co to jest "usuń to"?
- 21. Co to są eleganckie sposoby na MixIns w Pythonie?
- 22. Co to jest "\ 00" w języku Python?
- 23. Co to jest @ @ w Perlu?
- 24. Co to jest === w javascript?
- 25. Co to jest @. w Perlu?
- 26. Co to jest @ @ w Bash?
- 27. Co to jest: w php?
- 28. Co to jest {} + {} w JavaScript?
- 29. Co to jest @ $ w perlu?
- 30. Co to jest `$?` W Powershell?
Pierwszy ogniwo nie żyje –