将函数存储在列表中并稍后调用它们

Dav*_*log 10 python function list

我想将函数存储在一个列表中,然后在程序中从该列表调用这些函数。

这对我有用,但是,我不知道它是否正确:

#example functions, my functions would actually get user input etc.
def func1():
    return 2
def func2():
    return 3

options = [ func1, func2 ]

#call functions

options[0]()
Run Code Online (Sandbox Code Playgroud)

这是将函数存储在列表中并调用它的正确方法吗?或者有没有其他更好的方法来做到这一点?

cod*_*key 7

是的,你可以做到。如果您想使用“one liner”调用列表中的所有函数,您可以执行以下操作:

results = [f() for f in options]
Run Code Online (Sandbox Code Playgroud)


mu *_*u 無 5

是的,这是正确的,但如果您的函数本质上确实是单行的,我建议您也看看lambdas,以便您的整个代码可以简化为:

options = [lambda: 3, lambda: 2]
Run Code Online (Sandbox Code Playgroud)

正如评论中已经指出的那样,您当然需要记住列表中函数的顺序。