Python 有没有办法将函数存储在列表或字典中,以便在调用索引(或键)时触发存储的函数?

Python 有没有办法将函数存储在列表或字典中,以便在调用索引(或键)时触发存储的函数?,python,dictionary,dispatch,Python,Dictionary,Dispatch,例如,我尝试过像mydict={'funcList1':[foo(),bar(),goo()],'funcList2':[foo(),goo(),bar()]这样的方法,但不起作用 是否存在具有这种功能的某种结构 我意识到,我显然可以用一堆def语句轻松地做到这一点: def func1(): foo() bar() goo() 但是,我需要的语句数量变得非常笨拙和难以记忆。最好将它们很好地包装在一个字典中,这样我可以不时地检查它们的键。函数是Python中的第一类对象

例如,我尝试过像mydict={'funcList1':[foo(),bar(),goo()],'funcList2':[foo(),goo(),bar()]这样的方法,但不起作用

是否存在具有这种功能的某种结构

我意识到,我显然可以用一堆
def
语句轻松地做到这一点:

def func1():
    foo()
    bar()
    goo()

但是,我需要的语句数量变得非常笨拙和难以记忆。最好将它们很好地包装在一个字典中,这样我可以不时地检查它们的键。

函数是Python中的第一类对象,因此可以使用字典进行调度。例如,如果
foo
bar
是functions,而dispatcher就是这样一个字典

dispatcher = {'foo': foo, 'bar': bar}
请注意,值是作为函数对象的
foo
bar
,而不是
foo()
bar()

要调用
foo
,只需执行
dispatcher['foo']()

编辑:如果您想运行存储在列表中的多个函数,您可以这样做

dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}

def fire_all(func_list):
    for f in func_list:
        f()

fire_all(dispatcher['foobar'])

您描述了函数式编程,但没有意识到:PNeat!我可以在值中存储多个函数吗?所以当我调用键
[foo]()
它运行存储在值中的所有函数?@Zack添加了关于列表中多个函数的详细信息整洁干净,解释得很好,如果方法是类的一部分,那么这将如何工作?因此,如果函数是``def func1(self)```并且当我们调用它时,它必须是self.func1,我们如何制作“dispatcher”dict?把这个方法输入字典就行了