【发布时间】:2015-02-12 21:06:38
【问题描述】:
我想将函数存储在一个列表中,然后在程序中从该列表中调用这些函数。
这对我有用,但是我不知道它是否正确:
#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]()
这是将函数存储在列表中并调用它的正确方法吗?还是有其他更好的方法来做到这一点?
【问题讨论】:
-
这种方式很好
-
为什么首先将函数存储在列表中?您可以随时调用它们,而无需将它们存储在列表中。
-
这对我来说似乎很好。当然,您需要记住列表中函数的顺序。否则,您可能需要使用字典并按名称访问函数对象:
options = {'func1':func1, 'func2':func2}; options['func1']()。但是你必须首先问自己为什么要这样做。您可以将函数放在一个模块中并导入它。 -
谢谢,我不确定。从来没有见过这样的事情,我所做的只是试验和猜测。我不希望它在我的程序中导致未来的问题,因为我不知道这是否安全/实际工作等。
-
@qqvc 因为这实际上是减少代码并且在我的情况下更容易修改。我得到用户输入(一个数字),现在我只需要确保索引有效并按索引从该列表中调用函数。否则我将不得不创建一个巨大的 if 块。那是混乱,丑陋和大量的代码。你知道我的意思吗?