返回顶部
首页 > 资讯 > 后端开发 > Python >在 Python 3.10 中使用“match...case”
  • 778
分享到

在 Python 3.10 中使用“match...case”

代码Python语法 2023-05-14 21:05:06 778人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

“match...case”语法类似于其他面向对象语言中的 switch 语句,它旨在使结构与 case 的匹配更容易。让我们开始.语法“match...case”语法如下:def greeting(message): match mess

在 Python 3.10 中使用“match...case”

“match...case”语法类似于其他面向对象语言中的 switch 语句,它旨在使结构与 case 的匹配更容易。

让我们开始.

语法

“match...case”语法如下:

def greeting(message):
match message.split():
case ["hello"]:
print("this message says hello")
case ["hello", name]:
print("This message is a personal greeting to {name}")
case _:
print("The message didn’t match with anything")

让我们通过语法来看看它是如何工作的。

我们创建的函数接受一个名为 message 的参数。match 关键字接受一个对象来比较列出的案例。

在我们的示例中,match 关键字接收一个字符串列表,这是 message.split() 操作的结果。为了进一步说明,假设我们这样调用函数:

greeting("hello")

该函数首先将这个字符串拆分为所有空格,并形成一个列表。对于上述输入,匹配运算符将使用 ["hello"] 列表。然后它将列表与每个案例进行比较。我们的第一个案例是:

case ["hello"]

我们的输入与此完全匹配,因此代码在这种情况下继续执行。

输出:

this message says hello

如果我们这样调用函数会怎样:greeting("hello George")?

使用该输入,匹配运算符将使用 ["hello", "George"] 列表来比较所有案例。第一种情况,case“hello”,将不匹配,因为比较列表中有两个元素,而不是一个。

结构匹配

匹配运算符匹配给定的表达式的结构,因此,由于 case 表达式的长度,我们的第一个 case 不匹配,即使比较表达式与列表中的第一个元素匹配。

第二种情况是 ["hello", name]。这就是我们的输入匹配的情况。如果你没有为 python 提供一个文字值来匹配,它会将比较表达式中的任何值绑定到 case 表达式中的变量名。因此,在我们的示例中,name 将设置为 George。并且这种情况匹配(它有“hello”作为第一个元素,并且还有一个元素,它被绑定到 name),所以输出是:

This message is a personal greeting to George

现在让我们尝试像这样调用函数:greeting("hello George Johnson")。

比较表达式变为 ["hello", "George", "Johnson"]。现在让我们来看看每个案例。第一种情况失败,因为比较表达式中有 3 个元素,而不是 1。第二种情况以同样的方式失败;第二种情况期望看到一个长度为 2 的列表,其中第一个元素是“hello”。第一个元素其实是“hello”,但是比较表达式有3个元素,所以这个case不匹配。

剩下的唯一选项是下划线大小写,这是默认的匹配所有内容的大小写。把它想象成 switch 语句中的默认情况。如果比较表达式与其他任何内容都不匹配,它将始终与 _ 情况匹配。

下划线作为最后一种情况这种情况下的任何情况都不会运行,因为所有情况都将与下划线情况匹配。这类似于 if...else 中的 else 关键字。_ 大小写匹配所有内容,因为 Python 将 _ 识别为有效的变量名。所以就像我们匹配 case ["hello", name] 时,比较表达式将绑定到 _ name。在我们的特定情况下,_ 变量将保存值 ["hello", "George", "Johnson"]。

所以在我们最新的函数调用greeting("hello George Johnson")中,输出将是:

The message didn’t match with anything

高级用法

“match...case”语法是一个非常强大的工具,可用于比较许多不同的表达式和值。如果像我们在上面的示例中那样比较列表,那么可以使用更多的匹配功能。

在 case 表达式中,可以使用运算符将所有剩余元素放入变量中。例如:

comparison_list = ["one", "two", "three"]
match comparison_list:
case [first]:
print("this is the first element: {first}")
case [first, *rest]:
print("This is the first: {first}, and this is the rest: {rest}")
case _:
print("Nothing was matched")

在此代码段中,第二种情况将匹配并执行,输出为:

This is the first: one, and this is the rest: ["two", "three"]

还可以从两个或多个结构中组合案例分支,如下所示:

match comparisonList:
 case [first] | [first, "two", "seven"]:
 print("this is the first element: {first}")
 case [title, "hello"] | ["hello", title]:
 print("Welcome esteemed guest {title}")
 case [first, *rest]:
 print("This is the first: {first}, and this is the rest: {rest}")
 case _:
 print("Nothing was matched")

第一种和第二种情况由几个不同的表达式组成,比较表达式可以适合这些表达式以运行 case 分支。这提供了一些灵活性来组合分支。

我们还将介绍字典的“match...case”语法。匹配运算符将检查比较表达式是否包含 case 表达式中的属性。例如:

comparisonDictionary = {
 "John": "boy",
 "Jack": "boy",
 "Jill": "girl",
 "Taylor": "girl"
}
match comparisonDictionary:
 case {"John": "boy", "Taylor": "boy"}:
 print("John and Taylor are both boys")
 case {"John": "boy", "Taylor": "girl"}:
 print("Taylor is a girl and John is a boy")
 case _:
 print("Nothing matches")

输出:

Taylor is a girl and John is a boy

match 运算符将检查输入字典中是否存在 case 属性,然后检查值是否匹配。

总之,新的“match...case”运算符是 Python 开发人员在创建分支案例时可以利用的强大工具。有了它,你可以可靠地检查任何传入变量的结构,并确保你不会尝试访问变量上不存在的内容。

重要在字典匹配中,即使输入字典的属性多于 case 指定的属性,case 仍将匹配。

总之,新的“match...case”运算符是 Python 开发人员在创建分支案例时可以利用的强大工具。有了它,可以可靠地检查任何传入变量的结构,并确保不会尝试访问变量上不存在的内容。

以上就是在 Python 3.10 中使用“match...case”的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 在 Python 3.10 中使用“match...case”

本文链接: https://lsjlt.com/news/205389.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在 Python 3.10 中使用“match...case”
    “match...case”语法类似于其他面向对象语言中的 switch 语句,它旨在使结构与 case 的匹配更容易。让我们开始.语法“match...case”语法如下:def greeting(message): match mess...
    99+
    2023-05-14
    代码 Python 语法
  • 深入理解最新Python中的Match Case
    有些人仍然认为 Python 不需要“switch-case”语法。 甚至 Guido 本人也不支持在 Python 中添加这种语法。但是,为什么它仍然在这个新版本中发布? 在我看来...
    99+
    2024-04-02
  • 如何深入理解最新Python中的Match Case
    如何深入理解最新Python中的Match Case,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。有些人仍然认为 Python 不需要“switch-case”语法。 甚至 G...
    99+
    2023-06-25
  • 如何使用Python 3.10中switch语法
    如何使用Python 3.10中switch语法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于从事数据科学和人工智能领域的人们来说,Python 是大家的首...
    99+
    2023-06-15
  • Match怎么在java 中使用
    这篇文章给大家介绍Match怎么在java 中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数...
    99+
    2023-06-14
  • case怎么在shell中使用
    这期内容当中小编将会给大家带来有关case怎么在shell中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。shell中的case语句:可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该...
    99+
    2023-06-09
  • python 中pass和match使用方法
    前言 ​​pass​​ 语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句。 例如: >>> while True: .....
    99+
    2024-04-02
  • 怎么在python中使用正则match( )方法匹配目标
    这期内容当中小编将会给大家带来有关怎么在python中使用正则match( )方法匹配目标,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、正则表达式作用给定的字符串是否符合正则表达式的过滤逻辑(“匹配”...
    99+
    2023-06-14
  • SQL中 CASE WHEN 使用
    一、NULL 值判断 1.判断空值,不成功 select case 字段名 when null then '空值' else '非空值' E...
    99+
    2024-04-02
  • 如何在表达式中使用Mysql SELECT CASE
    在MySQL中,可以使用SELECT CASE语句来根据不同的条件选择不同的值或执行不同的操作。下面是一个示例,展示了如何在...
    99+
    2023-09-26
    Mysql
  • MySQL如何在查询中使用CASE语句
    在MySQL中,可以使用CASE语句在查询中根据条件进行判断并返回不同的值。语法如下: SELECT CASE ...
    99+
    2024-04-09
    MySQL
  • python的match方法怎么使用
    在Python中,可以使用`match`方法来对一个字符串进行正则表达式匹配。首先,需要导入`re`模块:```pythonimpo...
    99+
    2023-08-30
    python match
  • VBS中Match对象的使用
    本篇内容主要讲解“VBS中Match对象的使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS中Match对象的使用”吧!Match 对象提供了对正则表达式匹配的只读属性的访问。说明Matc...
    99+
    2023-06-08
  • JavaScript如何在switch/case中使用数字区间
    小编给大家分享一下JavaScript如何在switch/case中使用数字区间,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在...
    99+
    2024-04-02
  • 如何在 MySQL CASE 语句中使用列数据?
    要理解它,请考虑“学生”表中的数据,如下所示 -mysql> Select * from Students; +----+-----------+-----------+----------+----------------...
    99+
    2023-10-22
  • sql中如何使用case when
    这篇文章主要介绍了sql中如何使用case when,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sql中case when的用法case具...
    99+
    2024-04-02
  • mysql中case when怎么使用
    mysql 中的 case when 语句是一种条件语句,用于根据指定的条件对数据执行不同的操作。其语法为:case when condition1 then result1 when ...
    99+
    2024-05-30
    mysql
  • 怎么在mysql存储过程中使用case语句
    今天就跟大家聊聊有关怎么在mysql存储过程中使用case语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。除了if语句,mysql提供了一个替代的...
    99+
    2024-04-02
  • 如何在shell脚本中使用case条件语句
    这期内容当中小编将会给大家带来有关如何在shell脚本中使用case条件语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。#case条件语句的语法格式case "变量"&nb...
    99+
    2023-06-09
  • oracle中case和decode如何使用
    这期内容当中小编将会给大家带来有关oracle中case和decode如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 总结: DE...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作