在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我确实在尝试做流控制