match case语句

Python 3.10 引入了一个新的特性:结构化模式匹配,通常称为“匹配案例”(match case)语句。这是 Python 语言中的一个重大改进,为 Python 添加了类似于其他一些编程语言(如 Rust 或 Scala)中的模式匹配功能。

基本概念

match case 语句是一种高级的条件分支结构,它允许您将一个值与一系列模式进行匹配,并根据匹配到的模式执行不同的代码块。这在处理复杂的数据结构时尤为有用。

基本语法

基本的 match case 语句结构如下:

match subject:
    case pattern1:
        # 执行代码块1
    case pattern2:
        # 执行代码块2
    ...
    case _:
        # 如果前面的模式都不匹配,执行这里的代码

这里,subject 是要匹配的对象,pattern1pattern2 等是要匹配的模式。如果 subject 匹配了某个模式,就会执行相应的代码块。

模式类型

  • 字面值模式:匹配具体的值,如数字、字符串等。
  • 变量模式:匹配任何值,并将该值绑定到变量。
  • 序列模式:匹配序列(如列表或元组)的结构。
  • 映射模式:匹配字典的键和值。
  • 类模式:匹配特定类的实例,并可以提取其属性。
  • 通配符:使用下划线(_)作为通配符,匹配任何值。

示例

下面是一个简单的示例,

演示了如何使用 match case 语句来匹配不同类型的数据:

def handle_message(msg):
    match msg:
        case "hello":
            return "Hi there!"
        case ["error", code]:
            return f"Error occurred with code {code}"
        case {"type": "greeting", "name": name}:
            return f"Hello, {name}"
        case _:
            return "Unknown message"

# 使用示例
print(handle_message("hello"))                      # 输出: Hi there!
print(handle_message(["error", 404]))               # 输出: Error occurred with code 404
print(handle_message({"type": "greeting", "name": "Alice"}))  # 输出: Hello, Alice
print(handle_message(12345))                        # 输出: Unknown message

在这个例子中:

  • msg 是字符串 "hello" 时,匹配第一个案例。
  • msg 是包含两个元素的列表,且第一个元素是 "error" 时,匹配第二个案例,并将第二个元素绑定到变量 code
  • msg 是包含特定键的字典时,匹配第三个案例,并将 "name" 键对应的值绑定到变量 name
  • 如果前面的模式都不匹配,_(通配符)将匹配任何值。

match case 语句提供了一种更为结构化和易读的方式来处理复杂的条件分支,尤其是在需要根据不同类型和结构的数据执行不同操作时。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵海之森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值