2016-06-17 13 views
0

Ich bin relativ neu in Python-Programmierung, sah ich dieses Code-Snippet in Codewarriors. Kann bitte jemand diesen Code erklären ...Python Funktionsaufruf Beispiel ([a, b, c, d]) (Eingabe)

def example(functions): 
    #my_code 
    return None 

example([a,b,c,d])(input) #What kind of call is this? 

Hier a, b, c, d sind Funktionen definiert. Ich brauche example Funktion definieren Ergebnis gleich dem Ergebnis der d(c(b(a(input))))

ich mit example([1,2,3])(1) Hier der übergebene Wert eine Liste nur vertraut bin zurückzukehren. Aber was ist, wenn sie Funktionen sind?

Bitte auch alle guten Ressourcen kommentieren, um es klar zu verstehen.

+1

Der von Ihnen angezeigte Code löst einen Fehler aus ("Kein Wert ist nicht aufrufbar"). Im Allgemeinen rufen Sie Funktionen mit 'f (parameters)' auf. Beachten Sie auch, dass in Python ein Kommentar mit '#' gestartet wird. In Python-Funktionen sind nur normale Objekte, also können Sie sie Variablen zuweisen, sie in Listen einfügen, sie als Funktionsparameter verwenden ... also ist etwas wie das Folgende gut definiert: 'def call (f, argument): return f (Argument) '. – syntonym

+0

Ich habe den Code bearbeitet. Das tut mir leid. –

+0

Funktionen sind Objekte wie alles andere. Sie können an Funktionen übergeben und von Funktionen zurückgegeben werden. Zum Beispiel nimmt die Funktion 'sorted' ein' Schlüssel'-Argument, das funktional ist: 'sorted ([1,2,3,4,5,6], Schlüssel = Lambda x: x% 2)' wird '[2, 4,6,1,3,5]. – Bakuriu

Antwort

2

Lassen Sie uns sehen, was foo(x)(y) bedeutet in der Regel:

def foo(x): 
    def bar(y): 
     return x + y 
    return bar 

print(foo(2)(3)) #prints 5 

Hier ist die erste Funktionsaufruf eine andere Funktion zurückgibt, der dann mit seinen eigenen Argumenten aufgerufen wird, ist es auch die Argumente und lokale Variablen der ersten Funktion nutzen können.

In Ihrem Fall, was sie wahrscheinlich Sie ist schreiben wollte:

def example(functions) 

    def f(input): 
     for function in functions: 
      input = function(input) 
     return result 

    return f 

example(<functionlist>) gibt eine zweite Funktion, die alle Funktionen in <functionlist> mit dem Eingang in die 2. bestanden gilt (wieder) Funktionsaufruf.

+0

Danke, können Sie mir eine Ressource vorschlagen, damit ich mehr darüber lesen kann. –