茶网站建设实训报告,wordpress 主题下载,推广网上国网的好处,做资源网站需要什么目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表
Python教程#xff08;一#xff09;#xff1a;环境搭建及PyCharm安装Python 教程#xff08;二#xff09;… 目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表
Python教程一环境搭建及PyCharm安装Python 教程二语法与数据结构Python 教程三字符串特性大全Python 教程四Python运算符合集Python 教程五理解条件语句和循环结构Python 教程六函数式编程Python 教程七match…case 模式匹配 正文开始 如果觉得文章对您有帮助请帮我三连订阅谢谢 前言
在 Python 中match 和 case 是一种新的语法结构首次出现在 Python 3.10 中。这种结构提供了一种类似于其他编程语言中 switch 或 case 的功能允许基于不同条件执行不同的代码块。
基本语法
match 语句
match 语句是 Python 中的模式匹配语句它允许你将一个值与多个模式进行匹配并根据匹配结果执行相应的代码块。
match value:case pattern1:code_block1case pattern2:code_block2...case _:default_code_blockcase 语句
case 语句是 match 语句的一部分用于定义一个或多个模式当 match 语句中的值与这些模式匹配时将执行相应的代码块。
模式匹配的类型
具体值匹配匹配一个具体的值。类型匹配匹配一个特定的数据类型。序列匹配匹配一个序列例如列表或元组。星号表达式匹配序列中的部分元素。命名变量在模式中使用变量名将匹配的值赋给这些变量。复杂匹配: 可以匹配多个值、匹配一定范围并且把匹配后的值绑定到变量
示例
具体值匹配 某个学生的成绩只能是 A、B、C用if语句编写如下 score B
if score A:print(score is A.)
elif score B:print(score is B.)
elif score C:print(score is C.)
else:print(invalid score.)用 match 进行改写
score Bmatch score:case A:print(score is A.)case B:print(score is B.)case C:print(score is C.)case _: # _表示匹配到其他任何情况print(score is ???.)类型匹配
def match_type(value):match value:case int():print(这是一个整数)case float():print(这是一个浮点数)case str():print(这是一个字符串)case _:print(未知类型)match_type(10) # 输出这是一个整数
match_type(3.14) # 输出这是一个浮点数
match_type(hello) # 输出这是一个字符串
match_type([1, 2, 3]) # 输出未知类型序列匹配
def match_sequence(value):match value:case [1, 2, 3]:print(匹配到 [1, 2, 3])case (1, num):print(匹配到元组第一个元素为 1,第二个数, num)case [1, *rest]:print(f匹配到以 1 开头的列表其余元素为 {rest})case _:print(匹配到其他值)match_sequence([1, 2, 3]) # 输出匹配到 [1, 2, 3]
match_sequence([1, 4, 5]) # 输出匹配到以 1 开头的列表其余元素为 [4, 5]
match_sequence((1, 2)) # 输出匹配到元组第一个元素为 1 第二个数 2
match_sequence(hello) # 输出匹配到其他值星号表达式
def match_sequence(value):match value:case [1, *rest]:print(f匹配到以 1 开头的列表其余元素为 {rest})case _:print(匹配到其他值)match_sequence([1, 2, 3]) # 输出匹配到以 1 开头的列表其余元素为 [2, 3]
match_sequence([1, 4, 5]) # 输出匹配到以 1 开头的列表其余元素为 [4, 5]命名变量
def match_named(value):match value:case (a, b):print(f匹配到元组第一个元素为 {a}第二个元素为 {b})case {name: name, age: age}:print(f匹配到字典名字为 {name}年龄为 {age})case _:print(匹配到其他值)match_named((1, 2)) # 输出匹配到元组第一个元素为 1第二个元素为 2
match_named({name: Alice, age: 30}) # 输出匹配到字典名字为 Alice年龄为 30
match_named([1, 2, 3]) # 输出匹配到其他值复杂匹配
age 15match age:case x if x 10:print(f 10 years old: {x})case 10:print(10 years old.)case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:print(11~18 years old.) case 19:print(19 years old.)case _:print(not sure.)# 11~18 years old.模式匹配的优势
代码可读性模式匹配使得代码更易于理解和维护。减少嵌套可以减少 if-elif-else 语句的嵌套使代码更简洁。类型安全通过类型匹配可以确保变量的类型正确减少类型错误。
总结
match 和 case 是 Python 3.10 中引入的新特性它们提供了一种强大且灵活的方式来处理条件逻辑。通过学习这些特性你可以编写更清晰、更高效的代码。希望本教程能帮助你更好地理解和使用这些新特性。如果你有任何问题或需要进一步的帮助请随时联系我们。