当前位置: 首页 > 面试题库 >

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

宰父子安
2023-03-14
问题内容

例如,我已经尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()],但这种方法不起作用。

具有这种功能的某种结构吗?

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

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

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


问题答案:

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

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

请注意,值arefoobarare是函数对象,而NOTfoo()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'])


 类似资料:
  • 我有一个Spring Boot应用程序,注释为。几乎所有的存储库都需要实现一些自定义逻辑,这是使用完成的。 是否有方法创建将从机制中排除的存储库?

  • 问题内容: 例如: 这可能吗?最好的选择是什么? 问题答案: 推荐的方法是使用匿名函数: 如果要存储已经声明的函数,则可以简单地通过名称将其引用为字符串: 在PHP的旧版本(<5.3)中,不支持匿名函数,您可能需要诉诸使用(自PHP 7.2起已弃用): 所有这些方法在伪类型的文档中列出。 无论选择哪种功能,都可以直接调用该函数(PHP≥5.4)或使用:

  • 我有一些用python编写的selenium代码,但问题是selenium总是在程序开始时打印出这个输出 由于我的电脑不支持蓝牙,我也得到了以下输出: 有没有办法只消除硒的产量?

  • 问题内容: 当selectedOption的值更改时,我想调用一个函数。在SwiftUI中,有没有一种类似于编辑TextField的方法? 具体来说,我想在用户更改selectedOption时保存选择的选项。 这是我的选择器: 我仍然是SwiftUI的新手,希望获得一些帮助。谢谢! 问题答案: 如果在视图中使用@State值,则不需要多余的变量 如果需要对@State进行单独的操作,最简单的方法

  • 问题内容: 好吧,我写了一些代码,我所做的只是for循环,但是更改了我调用的方法。我尝试使用for循环,这样会更整洁(出于好奇,看是否可以完成),但是当我这样做时它不会编译,因为它无法识别其中的项目我认为将数组作为一种方法。这就是我所拥有的: 当我尝试编译时,我得到 (它引用while循环中的第一条语句) 所以,我认为这可能是因为我将其设置为String类型的Array?有方法类型吗?这是可能吗?

  • 问题内容: 我正在考虑为我的Java应用程序创建调试工具。 我想知道是否有可能获得堆栈跟踪,就像但没有实际引发异常一样? 我的目标是在任何给定的方法中,转储堆栈以查看方法调用者是谁。 问题答案: 您还可以尝试获取所有活动线程的堆栈跟踪图。