从python列表中逐个调用函数

时间:2017-08-07 13:17:25

标签: python

我有一份功能列表

list1 = ['foo','boo','koo']

现在我想逐个调用这些函数。

for i in range(len(list1)):
    list1[i](<argumentslist>)

这给了我一个错误:

  

TypeError:&#39; str&#39;对象不可调用

我该如何做到这一点?

5 个答案:

答案 0 :(得分:0)

2:1放入列表

0.75

答案 1 :(得分:0)

您的列表不包含函数对象,您正在存储字符串。函数是python中的第一类对象。如果要将其存储为列表并调用它们,请使用函数对象,如下所示。 list = [foo, bar ] list[0](args)

答案 2 :(得分:0)

目前列表中的元素是字符串。鉴于您已定义函数foobookoo,您可以将这些函数放在列表中,而不包含'。即你将创建一个函数列表,而不是一个字符串函数名列表。

答案 3 :(得分:0)

不推荐但是:

def hello_world(int_):
    print("hello{}".format(int_))

list_ = ["hello_world"]
arg = 2

for i in list_:
    exec("{}({})".format(i,arg))

#hello2

答案 4 :(得分:0)

如果您使用**kwargs

,则无需删除引号
def the_function(**functions): 

    list1 = ['foo','boo','koo']
    for i in range(len(list1)):
        val = functions[list1[i]](3)

f1 = lambda x: pow(x, 2)
f2 = lambda x: x+3
f3 = lambda x: sum(i for i in range(x))

the_function(foo = f1, boo = f2, koo = f3)