我有一個Python腳本,它創建了自己的函數的字典,我希望它通過使用YARP讀取函數名稱和參數來執行它們(YARP的知識與這個問題雖然)。使用檢查將參數傳遞給Python中的函數
我創建了一個名爲「inc」的字符串列表,該字符串由進入程序的值填充。第一個項目是一個函數名稱,列表中的任何其他字符串都是參數。我創建了一個名爲「methods」的字典,其中鍵是函數名,值是對函數對象的引用(使用inspect模塊)。我將函數的返回值存儲在變量「result」中。
下面的代碼片段顯示了我目前使用的簡化版本,它工作正常,但不能處理具有多個參數的函數。爲了規避這一點,我用一個列表,如果函數需要更多參數:
if len(inc) == 1:
result = methods[inc[0]]() # call method with 0 arguments
elif len(inc) == 2:
result = methods[inc[0]](inc[1]) # call method passing a string
else:
args = []
result = methods(inc[0])(inc[1:]) # call method passing a list
理想情況下,我想改變這種做法,我的函數可以有任意數量的參數,但我無法弄清楚如何我可以做到這一點。我是Python的新手,我查看了文檔和各種網站 - 我找不到解決方案。我嘗試過創建參數元組,但是這不起作用,因爲它最終將整個元組作爲一個參數傳遞。
有沒有比這個問題更好的解決方案,比如創建一些代表一組參數的對象並將其傳遞給函數?任何建議將不勝感激!
完美,非常感謝! – MxB 2012-07-17 10:35:12