我已经在我的代码中实现了第二个switch case语句,但是由于某种原因一个起作用而另一个不起作用。
有问题的一个是这样的:
def graph_add_depend(caseSelected, graph, data):
switcher = {
1: graph.addFullNC(data[1], data[0]),
2: graph.addFullNC(data[0], data[1]),
0: graph.addFullNC2(data[0], data[1])
}.get(caseSelected, print("Something went wrong: GAD 44"))
我打电话给它:
graph_add_depend(is_added, graph, temp)
当我执行代码时,它不会进入正确的大小写,但将执行其中的每一个:又名1再2再0。
反正有解决此问题的方法。我靠上帝的爱无法找到问题所在。 对我来说,最令人沮丧的是,在我看来,有效的switch语句和这个损坏的语句实际上是相同的...
答案 0 :(得分:2)
如果您不希望在不区分大小写的情况下调用该函数,则在构建字典时不要调用它。将每个案例包装在lambda
中是延迟评估的一种很简单的方法:
def graph_add_depend(caseSelected, graph, data):
return {
1: lambda: graph.addFullNC(data[1], data[0]),
2: lambda: graph.addFullNC(data[0], data[1]),
0: lambda: graph.addFullNC2(data[0], data[1])
}[caseSelected]()
请注意,如果KeyError
不是有效的选项,则会自动引发caseSelected
;通常,引发异常比打印消息而不返回任何内容更好。