如何解决“ Switch / case”语句在Python中执行所有可能的语句
我已经在我的代码中实现了第二个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,temp)
当我执行代码时,它不会进入正确的大小写,但将执行其中的每一个:又名1再2再0。
反正有解决此问题的方法。我靠上帝的爱无法找到问题所在。 对我来说,最令人沮丧的是,在我看来,有效的switch语句和这个损坏的语句实际上是相同的...
解决方法
如果您不希望在不区分大小写的情况下调用该函数,则在构建字典时不要调用它。将每个案例包装在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
;通常,引发异常比打印消息而不返回任何内容更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。