【发布时间】:2021-04-25 23:57:11
【问题描述】:
这是来自this question 的一段代码,它可以替代 Python 中的 switch 语句。
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
我是 Python 新手,我不明白它在做什么。所以我知道第一部分是变量赋值 - 但[value](x) 是做什么的?
【问题讨论】:
-
[value]将返回与键value对应的值。然后(x)将调用带有参数x的lambda e表达式 -
请不要使用这个。使用
if条件 -
@DeepSpace 为什么不呢?这对我来说似乎是一个不错的开关替代品
-
@Nullman 因为它给代码增加了噪音,并且有巨大的开销(与它实现的相比):创建一个字典,3个函数,散列
value并执行其中一个函数。 ..几乎没有理由,可以通过3个elif分支来实现 -
这是一个
dict存储函数作为值。所以,dict['a'] 将返回一个函数,dict['a'](x)将执行该函数
标签: python lambda switch-statement variable-assignment