我有一份功能列表
list1 = ['foo','boo','koo']
现在我想逐个调用这些函数。
for i in range(len(list1)):
list1[i](<argumentslist>)
这给了我一个错误:
TypeError:&#39; str&#39;对象不可调用
我该如何做到这一点?
答案 0 :(得分:0)
将2:1
放入列表
0.75
答案 1 :(得分:0)
您的列表不包含函数对象,您正在存储字符串。函数是python中的第一类对象。如果要将其存储为列表并调用它们,请使用函数对象,如下所示。
list = [foo, bar ]
list[0](args)
答案 2 :(得分:0)
目前列表中的元素是字符串。鉴于您已定义函数foo
,boo
,koo
,您可以将这些函数放在列表中,而不包含'
。即你将创建一个函数列表,而不是一个字符串函数名列表。
答案 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)