W Pythonie, przypuśćmy, że mam funkcję f
, którą chcę przekazać z pewnymi drugorzędnymi argumentami (zakładam dla prostoty, że to tylko pierwszy argument, który pozostaje zmienny).Różnice między functools.partial i podobną lambda?
Jakie są różnice między robieniem tych dwóch sposobów (jeśli istnieją)?
# Assume secondary_args and secondary_kwargs have been defined
import functools
g1 = functools.partial(f, *secondary_args, **secondary_kwargs)
g2 = lambda x: f(x, *secondary_args, **secondary_kwargs)
W doc page for partial
, na przykład, nie jest to cytat:
partial
obiekty zdefiniowane w klasach zachowywać się jak metody statyczne i nie przekształci związanych metod podczas przykład atrybut przeglądowej.
Czy metoda lambda cierpi z tego powodu, aby zastosować metodę klasy z argumentów podanych do klasy (w konstruktorze lub później w funkcji)?
Myślę, że moje pytanie jest zupełnie inne niż powiązane, jednak górna odpowiedź na to pytanie jest tak dokładna, że odpowiada (przez przypadek) na wiele z tego, czego szukałem. Nie będę narzekał, jeśli zostanie zamknięty jako duplikat. – ely
Zgadzam się, że to nie jest duplikat, ponownie otworzyłem pytanie. Jeśli chodzi o inne odniesienia, pokrewnym pytaniem jest [tutaj] (http://stackoverflow.com/questions/220658/what-is-the-difference-between--closure- and -a-ambda). – wim