在JavaScript中,使用switch
语句,我可以执行以下代码:
switch(true){
case 1 === 1:
console.log(1)
break
case 1 > 1:
console.log(2)
break
default:
console.log(3)
break
}
它将返回1
,因为JavaScript switch
将比较true === (1 === 1)
但是,当我用Python的Match
语句尝试它时,同样的情况并没有发生,如下所示:
match True:
case 1 = 1:
print(1)
case 1 > 1:
print(2)
case _:
print(3)
它会传回:
File "<stdin>", line 2
case 1 = 1:
^
SyntaxError: invalid syntax
如果我尝试这样做,则会返回另一个错误:
Check1 = 1 == 1
Check2 = 1 > 1
match True:
case Check1:
print(1)
case Check2:
print(2)
case _:
print(3)
它会传回:
case Check1:
^^^^^^
SyntaxError: name capture 'Check1' makes remaining patterns unreachable
在不使用大量if和elif的情况下,执行许多不同检查的最干净/最快方法是什么?
3条答案
按热度按时间13z8s7eq1#
在JavaScript中,使用switch语句,我可以执行以下代码
我绝对不会使用JavaScript作为python的任何形式的试金石或比较器。
如果您在第一个测试用例中使用了
1==1
,下面是两个测试用例最终要做的事情。这就是第二个版本出现错误的原因。
True
永远只会是True
,所以不会命中其他情况。根据你的例子,你似乎只是想用
match/case
来确定一个表达式的“真实性”。如果你有很多表达式,你可以做一些像下面的,虽然我不认为这是很好的。
cases
应该是match
的可能结果,而不是试图模拟match
的表达式。你在反向操作。下面的链接应该告诉你关于match/case
你需要知道的几乎所有事情,以及为你提供替代方案。Match/Case Examples and Alternatives
kcrjzv8t2#
python中的switch case是通过为'if-else-if'语句创建一个函数并声明上面的case来使用的,如下所示:
else是“默认值”,您可以添加任意多个elif语句。
gudnpqoy3#
如果你不想使用Python 3.10中的match语句,你可以创建一个类似于switch的语句,用一个单行函数,并将其与一个一遍for循环一起使用,它看起来非常类似于javascript语法:
请注意,如果不使用break,条件将流过(如果需要,这将允许执行多个case)。