如何在匹配案例python 3.10中做一个else

Posted

技术标签:

【中文标题】如何在匹配案例python 3.10中做一个else【英文标题】:how to do an else in match case python 3.10 【发布时间】:2021-10-18 14:04:34 【问题描述】:

Python最近在python 3.10版本中发布了match case。问题是我们如何在python中为case做一个默认值。我可以做if elif但不知道怎么做else。下面是代码。

x = "hello"
match x:
     case "hi":
          print(x)
     case "hey":
          print(x)
     default:
          print("not matched")

我自己添加了这个默认。我想知道在python中这样做的方法

【问题讨论】:

【参考方案1】:

您可以在 python 中定义默认情况。为此,您使用通配符 _。下面的代码演示了它。

x = "hello"
match x:
     case "hi":
          print(x)
     case "hey":
          print(x)
     case _:
          print("not matched")

【讨论】:

【参考方案2】:
match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

cf:https://docs.python.org/3.10/whatsnew/3.10.html#syntax-and-operations

【讨论】:

【参考方案3】:
for thing in [[1,2],[2,11],[12,14,13],[10],[10,20,30,40,50]]:
match thing:
    case [x]:
        print(f"single value: x")
    case [x,y]:
        print(f"two values: x and y")
    case [x,y,z]:
        print(f"three values: x, y and z")       
    case _: # change this in default 
        print("too many values")

如果您想阅读并获得更多了解:https://towardsdatascience.com/pattern-matching-in-python-3-10-6124ff2079f0

【讨论】:

@blackbrandt,我刚刚修好了

以上是关于如何在匹配案例python 3.10中做一个else的主要内容,如果未能解决你的问题,请参考以下文章

[EuroPython 2021笔记] Python 3.10新功能开发者亲述:模式匹配案例实战

[EuroPython 2021笔记] Python 3.10新功能开发者亲述:模式匹配案例实战

[EuroPython 2021笔记] Python 3.10新功能开发者亲述:模式匹配案例实战

有没有办法匹配 Python ≥ 3.10 中的不等式?

就在之前10月,Python 3.10 正式发布了,我发现了一个可怕的功能......

就在之前10月,Python 3.10 正式发布了,我发现了一个可怕的功能......