Python-Funktionen in Listen

8

Ich habe heute in der Informatik nach einer Funktion als Variable gefragt. Zum Beispiel kann ich eine Funktion wie returnMe (i) erstellen und ein Array erstellen, das zum Aufruf verwendet wird. Wie h = [help, returnMe] und dann kann ich h1 sagen und es würde returnMe ("Bob") aufrufen. Tut mir leid, ich war ein bisschen aufgeregt. Meine Frage ist, gibt es eine Möglichkeit, wie h.append (def-Funktion) aufzurufen und eine Funktion zu definieren, die nur im Array existiert?

BEARBEITEN:

Hier ist ein Code, den ich damit geschrieben habe! Also habe ich gerade einen tollen FizzBuzz mit dieser Lösung fertig gemacht, vielen Dank nochmal! Hier ist dieser Code als Beispiel:
    funct = []     s=""

%Vor%     
Hovestar 04.03.2013, 19:31
quelle

4 Antworten

12

Sie können anonyme Funktionen mit dem Schlüsselwort lambda erstellen.

%Vor%

entspricht ungefähr:

%Vor%

Wenn Sie also eine Liste mit Funktionen erstellen möchten:

%Vor%     
mgilson 04.03.2013, 19:32
quelle
3

Nicht wirklich in Python. Wie mgilson zeigt, können Sie dies mit trivialen Funktionen tun, aber sie können nur Ausdrücke enthalten, keine Anweisungen, sind also sehr begrenzt (Sie können zB keine Variablen zuweisen).

Dies wird natürlich in anderen Sprachen unterstützt: In Javascript zum Beispiel ist es sehr idiomatisch, anonyme Funktionen zu erstellen und weiterzugeben.

    
Daniel Roseman 04.03.2013 19:34
quelle
2

Sie können die Funktionen im ursprünglichen Bereich erstellen, sie dem Array zuweisen und sie dann aus ihrem ursprünglichen Bereich löschen. Sie können sie also tatsächlich vom Array aus aufrufen, aber nicht als lokale Variable. Ich bin mir nicht sicher, ob dies Ihren Anforderungen entspricht.

%Vor%     
Hyperboreus 04.03.2013 19:40
quelle
2

Sie können eine Liste von lambda -Funktionen erstellen, um sie um jede Zahl von 0 bis 9 zu erhöhen:

%Vor%

Seite Hinweis:

Ich denke, es ist auch wichtig zu beachten, dass dies (Funktionszeiger nicht lambdas) ungefähr so ​​ist, wie python Methoden in den meisten Klassen enthält, außer dass es sich um eine Liste mit Funktionsnamen handelt, die auf die Funktionen verweisen. In vielen, aber nicht allen Fällen entspricht instance.func(args) instance.__dict__['func'](args) oder type(class).__dict__['func'](args)

    
Raufio 04.03.2013 19:55
quelle