Lisp's APPLY ist für den Aufruf von Funktionen mit berechneten Argumenten, die in Listen gespeichert sind.(Abgeändert von Rainers Kommentar)
Der folgende Code ändert zum Beispiel (list 1 2 3) in (+ 1 2 3).
(apply #'+ '(1 2 3))
Pythons apply tut jedoch das, was Lisp's funcall tut, abgesehen von einigen kleinen Unterschieden (Eingabe wird als Tupel/Liste angegeben)
(defun add (x y) (+ x y))
(funcall #'add 1 2)
or
(funcall #'(lambda (x y) (+ x y)) 10 2)
apply(lambda x,y : x+y, \[1,2\])
Was meinen Sie dazu? Gibt es weitere Unterschiede zwischen Lisp's funcall und Python's apply?
2 Stimmen
Beachten Sie, dass Sie auch Folgendes tun können
operator.add(*[1,2])
anstelle von1+2
. Viel Vernebelung?5 Stimmen
Nein, Lisp's APPLY ist nicht dazu da, das erste Element in einer Liste zu ersetzen. Lisp's APPLY ist für den Aufruf von Funktionen mit berechneten Argumentlisten, die in Listen gespeichert sind.