为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

月关宝盒 2019-11-27 14:36:04
例如,我已经尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()],但这种方法不起作用。具有这种功能的某种结构吗?我意识到我显然可以用一堆def语句来轻松做到这一点:def func1():    foo()    bar()    goo()但是我需要的语句数量变得非常笨拙且难以记住。最好将它们很好地包装在字典中,这样我可以一次又一次地检查它们的键。
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

函数是Python中的一流对象,因此您可以使用字典进行分派。例如,if foo和bar是函数,并且dispatcheris像这样的字典。


dispatcher = {'foo': foo, 'bar': bar}

请注意,值are foo和barare是函数对象,而NOT 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'])


查看完整回答
反对 回复 2019-11-27
  • 1 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信