我有很多函数,如果我有一个数组[echo, "Bob is Good"]
,我想用整个数组的参数运行echo函数。所以需要arr[0]
并使用整个数组的参数运行该函数。现在我只有if语句,例如:
...
elif arr[0] == 'echo':
echo(arr)
elif arr[0] == 'var':
var(arr)
此外,最好,现在我的功能设置为前缀cmd。例如,echo函数将被称为echocmd,所以如果有办法实现它,它也会很棒!
答案 0 :(得分:5)
显而易见的方式。
funcdict = {
'echo': echocmd,
'var': varcmd,
...
}
...
funcdict.get(arr[0], invalidcmd)(arr)
答案 1 :(得分:0)
您可以将函数直接存储在列表中(它们不是数组;在Python中,这意味着不同的东西):
def echocmd(foo, bar, baz):
print foo, bar, baz # for testing
my_data = [echocmd, 'spam', 'and', 'eggs']
my_data[0](*my_data[1:])
答案 2 :(得分:0)
两种方式:
传递代表值,即与您要运行的函数对应的字符串或整数。使用字典将该值索引到实际函数。
传递对实际功能的引用,并使用引用来调用它。
第二种更通用 - 你可以弥补你喜欢的任何功能并传递它。第一个可以让你“沙盒”你的翻译,限制允许的功能,也可以更容易外部存储。