广告位联系
返回顶部
分享到

Python3.10新特性之match语句示例介绍

python 来源:互联网 作者:佚名 发布时间:2023-10-18 22:58:59 人浏览
摘要

在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法就是通过if ... elif ... else ...语句,但是这样毕竟不够优雅,不够Pythonic 更推荐的做法是

在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法就是通过if ... elif ... else ...语句,但是这样毕竟不够优雅,不够“Pythonic”

更推荐的做法是通过字典(dict)实现。

通过字典间接实现 switch

想要通过字典来实现条件分支语句,首先我们需要定义一个字典,来表示不同case和返回值/函数之间的映射关系,然后再利用字典的特性,即可以实现类似于switch的功能。下面定义一个简单的函数,传入不同的case就会打印不同的内容,也可以将打印内容的语句替换成你想要执行的函数:

1

2

3

4

5

6

7

8

9

def switch(case):

    mapping = {

        1: "print('case 1')",

        2: "print('case 2')"

    }

    return eval(mapping[case])

switch(1)

运行结果:

case 1

可以看到,输出结果正是我们想要的“case 1”的结果。

在Python 3.10出现之前,我们更多的是通过上面这种字典映射的方式,来实现类似于switch语句的功能。但是伴随着Python 3.10的发布,Python也终于迎来了自己的'switch'语句,也就是接下来我们重点介绍的match语句。

Python 3.10 新特性—— match 语句,参考资料:Python 3.10增加了比switch更强大的match表达式在运行以下代码之前,请先确保自己的Python版本大于等于3.10。和其他语言一样,当变量num满足哪个case的条件时,就会执行该条件下的对应代码:

1

2

3

4

5

6

7

8

num = 5

match num:

    case 10:

        print('you lose')

    case 5:

        print('you win')

运行结果:

you win

当默认分支#当变量a不满足任意一个case条件时,如果我们没有对“其他“情况进行处理,那么是不会执行任何操作的。

下面的代码是不会有任何输出的,因为a不满足任意一个条件:

1

2

3

4

5

6

7

num = 3

match num:

    case 1:

        print('num 1')

    case 2:

        print('num 2')

无输出

1

2

3

4

5

6

7

8

9

10

11

如果想要对”其他“情况进行处理,那么写法如下:

num = 3

match num:

    case 1:

        print('num 1')

    case 2:

        print('num 2')

    case default:

        print('case default', default)

运行结果:

case default 3

可以看到,当变量a不符合任意一个条件时,就会运行到我们的default分支,同时会把变量值赋值给default变量。注意:这里的default仅仅只是一个变量名而已,并非规定写法,也可以使用其他变量名,例如x等。其作用就是在变量不符合任意一个分支条件时,将变量值赋值给该变量。

在case中使用元组

Python的match语句不仅支持数值类型的分支,也支持其他数据类型,例如元组(tuple)

1

2

3

4

5

6

7

8

a = (2, 4)

match a:

    case (1, 2):

        print('case 1')

    case (2, x):

        print('case 2', x)

运行结果:

case 2 4

可以看到,变量a在匹配到第二个分支条件时,还把元组的第二个元素值4赋值给了变量x。在case中使用判断语句#不仅如此,match语句还支持在分支条件中插入判断语句:

1

2

3

4

5

6

7

8

9

10

11

a = (2, 2)

flag = False

match a:

    case (1, 2):

        print('case 1')

    case (2, x) if flag:

        print('case 2', x)

    case default:

        print('case default', default)

运行结果:

case default (2, 2)

由于第二个分支条件中if flag为False,不符合条件,所以代码进入到最后一个分支条件中。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
    Tag :
相关文章
  • python查找指定依赖包简介信息实现介绍
    做python项目时,想安装某个依赖包的最新版本,但又不知道它的版本号具体到多少,因此需要搜索查看它的相关简介信息. 原来的时候,可以直接
  • Python3.10新特性之match语句示例介绍
    在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法就是通过if ... elif ... else ...语句,但是这样
  • numpy.insert()的具体使用方法介绍
    numpy.insert()主要用于向矩阵中插入行或列。对于多维矩阵,可以沿任意一个轴插入元素。 1. 参数说明 1 numpy.insert(arr, obj, values, axis=None) arr:
  • 22个Python的万用公式分享介绍

    22个Python的万用公式分享介绍
    在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。 小编
  • Python一行代码识别增值税发票实现介绍

    Python一行代码识别增值税发票实现介绍
    识别发票 录入发票是一件繁琐的工作,如果可以自动识别并且录入系统,那可真是太好了。 今天我们就来学习一下,如何自动识别增值税发
  • Python中文词频统计的介绍

    Python中文词频统计的介绍
    词频统计是指在文本中计算每个词出现的次数。 在 Python 中,可以使用一些第三方库(如 jieba)来分词,然后使用字典等数据结构记录每个
  • educoder之Python数值计算库Numpy图像处理介绍
    NumPy Python数值计算重要库 在图像处理领域,NumPy可以帮助我们高效地对图像进行处理。通过使用NumPy中的数组操作,我们可以快速地完成各种
  • Python中关于 *args与**args的用法介绍

    Python中关于 *args与**args的用法介绍
    关于 *args与**args的用法 *args 和 **kwargs主要用于函数定义,你可以将不定数量的参数传递给某个函数。 *args *args 不定参数(不定的意思是指,
  • python实现数组平移K位
    python数组平移K位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 def move(ls: list, offset): 元素原索引+位移数
  • PyTorch定义Tensor及索引和切片介绍(最新推荐)
    深度学习--PyTorch定义Tensor 一、创建Tensor 1.1未初始化的方法 ?这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计