Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,除了elifs之外,还有没有一种不那么垂直的方法来执行select case?_Python_Select_Flow Control - Fatal编程技术网

在python中,除了elifs之外,还有没有一种不那么垂直的方法来执行select case?

在python中,除了elifs之外,还有没有一种不那么垂直的方法来执行select case?,python,select,flow-control,Python,Select,Flow Control,因此,我可以使用 if integer == 1: case0() elif integer == 2: case2() elif integer == 3: case3() .... elif integer == N: caseN() 有时我使用索引作为选择器的列表 selectCase = [case0(),case1(),case3(),...,caseN()] [N] 但是这使得列表中的每个项目在被选中之前都要被处理,对吗 所以我想知道是否还有其他方法可以做到这一点

因此,我可以使用

if integer == 1:
  case0()
elif integer == 2:
  case2()
elif integer == 3:
  case3()
....
elif integer == N:
  caseN()
有时我使用索引作为选择器的列表

selectCase = [case0(),case1(),case3(),...,caseN()] [N]
但是这使得列表中的每个项目在被选中之前都要被处理,对吗

所以我想知道是否还有其他方法可以做到这一点,而不需要跨越太多的垂直方向来控制执行的代码。 是否有可能跳转到部分代码?也许我不想解一个函数,只是跳过几行


谢谢

一种方法是利用您可以在字典中存储函数这一事实:

functions = {
    1: case1,
    2: case2,
    ...
}

functions[case]() 

注意,我没有在字典中使用括号。在列表中的示例中,您将存储函数的结果,而不是函数本身。

您可以执行
selectCase=[case0,case1,case3,…,caseN][N]()
对于从0或1开始的序列号,只需使用列表即可。对于从1开始,在开始处插入一个
None
,以覆盖
0
。我只是使用了任意数字,我不确定OP的用例是否真的那么简单。问题:有时我使用一个列表,使用索引作为选择器,这是一个很好的解决方案。唯一的问题是,若每个函数需要不同的参数,那个么我需要这样的东西:因为我基本上是在尝试选择运行哪些代码,就像您使用elifs一样。只要参数是计算变量,我想这只需要花费额外的时间来构建列表,而不是elifs。@IanAuld我确实在尝试做流控制