2010-05-03 2 views
8

Ich baue einen einfachen Interpreter in Python und ich habe Probleme mit der Verarbeitung unterschiedlicher Anzahl von Argumenten zu meinen Funktionen. Meine aktuelle Methode besteht darin, eine Liste der Befehle/Argumente wie folgt zu erhalten.Übergeben Sie Elemente einer Liste als Argumente für eine Funktion in Python

args = str(raw_input('>> ')).split() 
com = args.pop(0) 

Dann com auszuführen, ich überprüfen, ob es in meinem Wörterbuch von command-> Code-Mappings ist und wenn es nenne ich die Funktion, die ich dort gespeichert ist. Für einen Befehl ohne Argumente, würde dies wie folgt aussehen:

commands[com]() 

Wenn jedoch ein Befehl mehrere Argumente hatte, möchte ich dies:

commands[com](args[0],args[1]) 

Gibt es einen Trick, wo ich einige passieren könnte (oder alle) der Elemente meiner Argumentliste auf die Funktion, die ich aufrufen möchte? Oder gibt es eine bessere Möglichkeit, dies zu implementieren, ohne Pythons cmd-Klasse verwenden zu müssen?

Antwort

13

Versuchen Sie Ihre Liste in Positionsargumente Auspacken:

commands[com](*args)