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

使用字典选择要执行的功能

贺波
2023-03-14
问题内容

我正在尝试使用函数式编程来创建包含键和要执行的功能的字典:

myDict={}
myItems=("P1","P2","P3",...."Pn")
def myMain(key):
    def ExecP1():
        pass
    def ExecP2():
        pass
    def ExecP3():
        pass
        ...
    def ExecPn():
        pass

现在,我已经看到了用于在模块中查找定义的函数的代码,我需要执行以下操作:

    for myitem in myItems:
        myDict[myitem] = ??? #to dynamically find the corresponding function

所以我的问题是,如何列出所有Exec功能,然后使用字典将它们分配给所需的项目?所以最后我将有myDict["P1"]() #this will call ExecP1()

我的真正问题是,我有大量的这些物品,并且制作了一个可以处理这些物品的图书馆,因此最终用户只需要调用 myMain("P1")

我想使用检查模块,但是我不确定该如何做。

我避免的理由:

def ExecPn():
    pass
myDict["Pn"]=ExecPn

我必须保护代码,因为我正在使用它在我的应用程序中提供脚本功能。


问题答案:

不为此感到骄傲,但是:

def myMain(key):
    def ExecP1():
        pass
    def ExecP2():
        pass
    def ExecP3():
        pass
    def ExecPn():
        pass 
    locals()['Exec' + key]()

但是我确实建议您将它们放在模块/类中,这确实是可怕的。



 类似资料:
  • 第二种形式的条件执行是选择执行,选择执行中存在有两种可能,由条件表达式来决定哪种可能被执行。语法看起来像这样: if( x%2 == 0) { cout << "x is even" << endl; }else{ cout << "x is odd" << endl; } 如果x除以2得到的余数是0,则我们知道X是偶数,代码会输出一条信息表明此意。由于条件非真即假,因而有且仅有一条语句

  • 我已经用php或js实现了问题的第一部分。我使用php来回显选中的属性。这里的问题是,通过onchange event选择时,收音机输入有其他可见的输入。但是,如果默认情况下选择/检查了任何收音机,则在我更改收音机选择之前,不会显示条件输入。因此,问题是,如何在默认情况下选中它,并且仍然显示相应的条件输入。 当选择single时,其他输入变为可见。同样的情况也适用于多人。如果php代码中指定的条件

  • 我正在使用RestTemboard类发布到基于JSON的RESTful Web服务。我可以从留档中看到,可以有几个MessageConverters可用于RestTem板实例。我面临的问题是,客户端似乎出于某种原因选择使用基于XML的转换器。“内容类型”标头设置为应用程序/XML,消息主体包含我想作为JSON发送的对象的XML表示。如何最容易地配置我的RestTemboard实例,以便为我的请求使

  • 你可以选择要导出的字段。在默认情况下,列表中所有字段都已选择。如果你不想导出某些字段,首先取消勾选“全部字段”选项,然后在列表中取消勾选那些字段。 【注意】导出查询结果时,向导会将会跳过这个步骤。

  • 你可以选择要导出的字段。在默认情况下,列表中所有字段都已选择。如果你不想导出某些字段,首先取消勾选“全部字段”选项,然后在列表中取消勾选那些字段。 【注意】导出查询结果时,向导会将会跳过这个步骤。

  • 问题内容: Select id, name, ROW_NUMBER() OVER (ORDER BY id asc) as ‘RowNo’ from customers where RowNo between 50 AND 60 我正在尝试选择50到60之间的行的子集。问题是“ RowNo”是无效的列名。 谢谢 使用SQL SERVER 2008 R2 问题答案: 使用您的查询作为像下面这样的子查