我是 python 的新手,我真的很喜欢使用字典而不是 switch/case 语句的概念,但是有一个问题我想不通
假设我们有一个“pythonic case”语句
{
'a': somemethod,
'b': othermethod
}['a']()
这工作正常,但我无法弄清楚如何像在其他语言(如 java)中一样运行一些代码块,看起来像这样
{
'a': { some commands here }
'b': { other commands here that are executed }
}['a']
也许 lambda 可以提供帮助?
非常感谢
请您参考如下方法:
字典值必须是某种对象。这意味着您基本上必须将要运行的代码封装在别处定义的函数中。您可以玩弄exec —— 例如,您可以创建一个字符串字典,然后从字典中exec 一个字符串——但是我不推荐它。
lambda 确实部分回答了您的问题,但 lambda 的适用性有限;它只能创建单行函数,还有其他限制。尽管如此,对于非常简单的功能来说,这已经足够了。
>>> d = {
... 'a': lambda: 5 + 5,
... 'b': lambda: 10 + 10
... }
>>> d['a']()
10
使用较长的代码块执行此操作的最佳方法是简单地定义一个函数或方法。
