2010-05-03 46 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) 
相關問題