我正在尝试使用函数式编程来创建包含键和要执行的功能的字典:
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()
Exec
myDict["P1"]() #this will call ExecP1()
我的真正问题是,我有大量的这些物品,并且制作了一个可以处理这些物品的图书馆,因此最终用户只需要调用 myMain("P1")
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]()
但是我确实建议您将它们放在模块/类中,这确实是可怕的。