2010-05-03 8 views
8

Estoy construyendo un intérprete simple en python y tengo problemas manejando diferentes números de argumentos para mis funciones. Mi método actual es obtener una lista de los comandos/argumentos de la siguiente manera.Pasar elementos de una lista como argumentos a una función en python

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

A continuación, para ejecutar com, puedo comprobar para ver si está en mi diccionario de command-> asignaciones de código y si es que llame a la función que he almacenado allí. Para un comando sin argumentos, este sería el resultado:

commands[com]() 

Sin embargo, si un comando tenía múltiples argumentos, me gustaría que esto:

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

¿Hay algún truco en el que podía pasar algunos (o todos) de los elementos de mi lista de argumentos a la función a la que intento llamar? ¿O hay una mejor manera de implementar esto sin tener que usar la clase cmd de python?

Respuesta

13

Trate de desembalar su lista en argumentos posicionales:

commands[com](*args) 
Cuestiones relacionadas