2010-05-03 78 views
8

我正在python中构建一个简单的解释器,并且在处理函数的不同数量的参数时遇到问题。我目前的方法是获取如下命令/参数的列表。将列表的元素作为参数传递给python中的函数

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

然后执行COM,我检查,看它是否是我的命令 - >代码映射的字典,如果它是我打电话我都存储在那里的功能。对于没有参数的命令,这将是这样的:

commands[com]() 

但是,如果一个命令有多个参数,我想这样的:

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

有一些技巧,我可以通过一些(或所有)的我的参数列表中的元素到我试图调用的函数?或者有没有更好的方式来实现这一点,而不必使用python的cmd类?

回答

13

尝试拆开你的名单分成位置参数:

commands[com](*args)