我在Python中使用字典/ get构造作为切换案例。它看起来与此类似:
def switch_function(pluginID, param):
switcher = {
'someid': somefunction(param),
}
return switch_function.get(pluginID, None)
但是,我想通过另一个键值对来扩展字典,这是在conf文件中定义的。我想要一个函数头作为值。对于特定的插件,函数头应该是该函数的头部,应该在switch case中执行。配置文件看起来像这样:
[aSection]
pluginid='anotherid'
functionHead: anotherfunction2
扩展字典应该很简单,但是可以将函数头映射为conf文件中的值吗?
答案 0 :(得分:1)
以下示例将为您提供exec
子句。您的dict
应扩展为以下内容:
switcher[config["aSection"]["anotherid"])] = func
然后你需要定义func看起来像这样:
#CONF
#[aSection]
#pluginid='anotherid'
#functionHead: anotherfunction2
#PYTHON
#config is an instance of a config parser
def func (param):
exec ("%s(param)" % config["aSection"]["functionHead"])
这将调用您之前定义的名为anotherfunction2
的函数。像这样调用func:
switcher[config["aSection"]["anotherid"])](param)
希望这有帮助!