我有一系列函数,我想用它们的索引来调用它们。然而 以下代码给出了一个错误( TypeError:'list'对象不可调用)
kFunc = [Row(a,value, row), Col(a,value,col), Gridval(a,value, row, col), Grid(a, value), Rectangle(a, value, row, col) ]
k = random.randint(1,4)
for j in range(k):
output = kFunc[j]()
每个函数都返回一个值。我尝试将kFunc[j]()
替换为kFunc[j]
。我没有得到任何错误,但所有5个函数都被执行了。
我发现了类似的问题here,但我无法找到问题的答案。
我很感激任何帮助。感谢
答案 0 :(得分:2)
您可能已经列出了返回值,假设Row
,Col
等是您正在讨论的功能。您可以执行以下操作来将它们包装在函数中:
kFunc = [
lambda: Row(a,value, row),
lambda: Col(a,value,col),
lambda: Gridval(a,value, row, col),
lambda: Grid(a, value),
lambda: Rectangle(a, value, row, col)
]
output = kFunc[random.randint(0,4)]() # will only do one of the lambda-wrapped operations