想学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,它的效率略低,但是在某些情况下,它可以提高代码的可读性和简洁性,从而减少错误和提高开发效率。此外,这个新特性还可以有效地避免一些常见的编程错误。
因此,我们需要在实际开发中综合考虑各种因素,选择最适合自己项目的编程风格和技术方案,以达到更好的开发效果和用户体验。
你会把这个新特性用在自己的项目里吗?在评论区写下你的答案吧~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
听说 Spring Bean 的创建还有一条捷径?
@[toc] 在 Spring Bean 的创建方法中,有如下一段代码: AbstractAutowireCapableBeanFactory#createBean: @Override protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException { //... try { // Give BeanPostProcessors a chance to return a proxy instead of the target bean instance. Object bean = resolveBeforeInstantiation(beanName, mbdToUse); if (bean != null) { return bean; } } try { Object beanInstance = doCreateBean(beanName, mbdToUse, args); return bean...
- 下一篇
从互联网到云时代,Apache RocketMQ 是如何演进的?
作者:隆基 2022 年,RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言,架构走向云原生化,并且覆盖了更多业务场景。 消息队列演进史 操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有 30 多年的历史。消息队列的发展主要经历了以下几个阶段: 第一阶段(1980-2000 年) 80 年代诞生了第一款消息队列 The Information Bus,第一次提出发布订阅模式来解决软件之间的通信问题;90 年代是国际商业软件巨头的时代,IBM、Oracle、Microsoft 纷纷推出自己的 MQ,其中最具代表性的为 IBM MQ,价格昂贵,面向高端企业,主要是大型金融、电信等企业。该类商业 MQ 一般采用高端硬件,软硬件一体机交付,MQ 本身的软件架构为单机架构。 第二阶段(2000~2007 年) 进入 00 年代后,初代开源消息队列崛起,诞生了 JMS、AMQP 两大标准,与之对应的两个实现分别为 ActiveMQ、RabbitMQ,他们引领了初期的开源消息队列技术。开源极大促进了消息队列的流行,降低了使用门槛,技术普惠化,逐渐成...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16