1

我在 Python 中使用字典/get 构造作为 switch case。它看起来类似于这个:

def switch_function(pluginID, param):
switcher = {
    'someid': somefunction(param),
}
return switch_function.get(pluginID, None)

但是,我想通过另一个键值对来扩展字典,该键值对在 conf 文件中定义。我想要一个函数头作为一个值。函数头应该是那个函数的头,它应该在switch case中执行,用于特定的pluginid。配置文件将如下所示:

[aSection]
pluginid='anotherid'
functionHead: anotherfunction2

扩展字典应该很容易,但是是否可以将函数头映射为 conf 文件中的值?

4

1 回答 1

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您之前定义的函数。像这样调用函数:

switcher[config["aSection"]["anotherid"])](param)

希望这可以帮助!

于 2016-06-02T01:03:41.827 回答