1

我有很多函数,如果我有一个数组,[echo, "Bob is Good"]我想用整个数组的参数运行 echo 函数。因此,它arr[0]使用整个数组的参数获取并运行该函数。现在我只有 if 语句,例如:

...
elif arr[0] == 'echo':
    echo(arr)
elif arr[0] == 'var':
    var(arr)

另外,最好现在我的函数设置为 cmd 前缀。例如,echo 函数将被称为 echocmd,所以如果有一种方法可以实现它,那就太好了!

4

3 回答 3

5

显而易见的方式。

funcdict = {
  'echo': echocmd,
  'var': varcmd,
   ...
}

 ...

funcdict.get(arr[0], invalidcmd)(arr)
于 2012-06-01T01:47:33.570 回答
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:])
于 2012-06-01T01:53:27.710 回答
0

两种方式:

  • 传递一个代表值,即与您要运行的函数相对应的字符串或整数。使用字典将该值索引到实际函数。

  • 传递对实际函数的引用,并使用该引用来调用它。

第二个更通用 - 你可以组成你喜欢的任何功能并传递它。第一个可以让您“沙箱”您的解释器,限制允许的功能,并且还可能更容易在外部存储。

于 2012-06-01T01:53:34.413 回答