在conf文件中定义函数头

时间:2016-06-02 00:47:02

标签: python dictionary switch-statement python-config

我在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文件中的值吗?

1 个答案:

答案 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)

希望这有帮助!