在Python中通过数组索引调用函数

时间:2017-10-31 18:41:13

标签: python arrays

我有一系列函数,我想用它们的索引来调用它们。然而 以下代码给出了一个错误( 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,但我无法找到问题的答案。

我很感激任何帮助。感谢

1 个答案:

答案 0 :(得分:2)

您可能已经列出了返回值,假设RowCol等是您正在讨论的功能。您可以执行以下操作来将它们包装在函数中:

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