写点什么

想学 Python 高级编程?必须了解这个小技巧:match-case!

作者:程序员晚枫
  • 2023-07-30
    重庆
  • 本文字数:1260 字

    阅读完需:约 4 分钟

想学Python高级编程?必须了解这个小技巧:match-case!

大家好,这里是程序员晚枫,小破站/知乎/小红书/抖音都叫这个名字。


上次给大家分享了Python高级编程第一讲:从使用类型提示开始;今天分享 Python 高级编程第二讲:深入解析 Python 中 switch case 的使用方法

写在前面

分享之前,先说几点注意事项:


  • Python 对 switch case 的支持,来自 PEP634,如下图所示。

  • Python 对 switch case 的支持,是通过 match case 实现的。语法稍有不同,作用完全一致。

  • 经过测试,Python 对 switch case 的支持是从 3.10 开始的,网上有部分文章说是 3.11 才开始支持是错误的。


代码演示

如下代码所示,在没有 match case 之前,我们通常是通过 if else 做匹配的。


然而,随着编程语言的不断发展,现在很多语言都已经提供了更加方便和高效的匹配方式,例如 Swift 语言中的 switch 语句。switch 语句不仅可以匹配基本数据类型,还可以匹配枚举类型、元组等更加复杂的数据结构。


而且,使用 switch 语句的可读性和可维护性也更好,代码量更少。


因此,如果你使用的编程语言支持 switch 语句,建议在匹配时优先考虑使用它。当然,在某些情况下,if else 也可以更好地解决问题,关键是根据具体情况选择最合适的匹配方式。


总之,无论是 if else 还是 switch,都需要掌握它们的使用方法,以便在实际编程中灵活运用。



def select_platform(name): if name == "小破站": print(f"程序员晚枫的{name}账号名称是:程序员晚枫") elif name == "Z乎": print(f"程序员晚枫的{name}账号名称是:程序员晚枫") elif name == "小红薯": print( f"程序员晚枫的{name}账号名称是:程序员晚枫") else: print(f"程序员晚枫的默认账号名称是:程序员晚枫")

select_platform("小破站")# Output: 程序员晚枫的小破站账号名称是:程序员晚枫
复制代码


有了 match case 之后,我们可以这样做匹配:



def select_platform(name): match name: case "小破站": print(f"程序员晚枫的{name}账号名称是:程序员晚枫") case "Z乎": print(f"程序员晚枫的{name}账号名称是:程序员晚枫") case "小红薯": print( f"程序员晚枫的{name}账号名称是:程序员晚枫") case _: print(f"程序员晚枫的默认账号名称是:程序员晚枫")

select_platform("小破站")# Output: 程序员晚枫的小破站账号名称是:程序员晚枫select_platform("Z乎")# Output: 程序员晚枫的Z乎账号名称是:程序员晚枫
复制代码

写在最后

这个新特性的效率怎么样呢?我查询了网上众多大佬的测评,初步结论是:很遗憾,它的效率低于 if-else。


然而,我们不能完全否定这个新特性的价值。虽然相对于 if-else,它的效率略低,但是在某些情况下,它可以提高代码的可读性和简洁性,从而减少错误和提高开发效率。此外,这个新特性还可以有效地避免一些常见的编程错误。


因此,我们需要在实际开发中综合考虑各种因素,选择最适合自己项目的编程风格和技术方案,以达到更好的开发效果和用户体验。


你会把这个新特性用在自己的项目里吗?在评论区写下你的答案吧~

发布于: 刚刚阅读数: 3
用户头像

C++开发,开源项目:python-office 2020-10-09 加入

还未添加个人简介

评论

发布
暂无评论
想学Python高级编程?必须了解这个小技巧:match-case!_Python_程序员晚枫_InfoQ写作社区