想学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,它的效率略低,但是在某些情况下,它可以提高代码的可读性和简洁性,从而减少错误和提高开发效率。此外,这个新特性还可以有效地避免一些常见的编程错误。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

巧用NGINX配置解决跨域问题

页面nginx配置 1,前端页面放在域名根目录,比如,http://www.xuecheng.com/ ,对应的nginx配置: #门户location / {alias D:/Z_lhy/SpringCloud/xuecheng_online/www/xc-ui-pc-static-portal/;index index.html;} 页…

基于STM32设计的人体健康检测仪

一、项目介绍 当前文章介绍基于STM32设计的人体健康检测仪。设备采用STM32系列MCU作为主控芯片,配备血氧浓度传感器(使用MAX30102血氧浓度检测传感器)、OLED屏幕和电池供电等外设模块。设备可以广泛应用于医疗、健康等领域。可以帮助医生和病…

平板光波导中导模的(注意不是泄露模)传播常数β的matlab计算(验证了是对的)

参照的是导波光学_王建(清华大学)的公式(3-1-2、3-1-3),算的参数是这本书的图3-3的。 function []PropagationConstantsMain() clear;clc;close all lambda01.55;%真空或空气中的入射波长,单位um k02*pi/lambda0; m3;%导模阶数(需要人为指定) n11.62;%芯…

网络知识点之-路由

本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! 路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来…

MySQL数据库配置及创建用户和授权

注意: 都是基于MySQL8.0以上版本 1、检查是否安装过sql [rootlocalhost ~]# rpm -[qa](https://so.csdn.net/so/search?qqa&spm1001.2101.3001.7020) | grep mysql[rootlocalhost ~]# rpm -qa | grep [mariadb](https://so.csdn.net/so/search?qmariadb&…

Spark(37):Streaming DataFrame 和 Streaming DataSet 创建

目录 0. 相关文章链接 1. 概述 2. socket source 3. file source 3.1. 读取普通文件夹内的文件 3.2. 读取自动分区的文件夹内的文件 4. kafka source 4.1. 导入依赖 4.2. 以 Streaming 模式创建 Kafka 工作流 4.3. 通过 Batch 模式创建 Kafka 工作流 5. Rate Source…

法治宣传教育三维VR虚拟展厅培养青少年守法意识

青少年是国家未来的希望,他们的法治意识和法律素养的提高对于社会的和谐稳定和法制建设具有重要意义。然而,传统的法治教育方式往往存在一些问题,如内容单一、形式枯燥等,难以引起学生的兴趣和注意力。因此,开展青少年…

随笔03 考研笔记整理

图源:文心一言 上半年的博文整理,下半年依然会更新考研类的文章,有需要的小伙伴看向这里~~🧩🧩 另外,这篇文章可能是我上半年的努力成果之一,因此仅关注博主的小伙伴能够查看它~~&#x1f9e…

嵌入式系统中的GPIO控制:从理论到实践与高级应用

本文将探讨嵌入式系统中的GPIO(通用输入输出)控制,着重介绍GPIO的原理和基本用法。我们将使用一个实际的示例项目来演示如何通过编程配置和控制GPIO引脚。将基于ARM Cortex-M微控制器,并使用C语言进行编写。 GPIO是嵌入式系统中最常见且功能最强大的接口之一。它允许硬件工…

基于RK3588+FPGA+AI算法定制的智慧交通与智能安防解决方案

随着物联网、大数据、人工智能等技术的快速发展,边缘计算已成为当前信息技术领域的一个热门话题。在物联网领域,边缘计算被广泛应用于智慧交通、智能安防、工业等多个领域。因此,基于边缘计算技术的工业主板设计方案也受到越来越多人的关注。…

Easyui中datagrid切换页码后,再次根据其他条件查询,重置为第一页,序号从1开始显示

Easyui中datagrid切换页码后&#xff0c;再次根据其他条件查询&#xff0c;无法将序号重置为1开始显示 1、查询按钮2、datagrid的查询方法3、datagrid点击分页4、重置方法 1、查询按钮 <a href"javascript:Query(1,true)" id"btnQuery" class"eas…

linux 指令 第3期

cat cat 指令&#xff1a; 首先我们知道一个文件内容属性 我们对文件操作就有两个方面&#xff1a;对文件内容和属性的操作 扩展&#xff1a;echo 指令 直接打印echo后面跟的字符串 看&#xff1a; 这其实是把它打印到了显示器上&#xff0c;我们也可以改变一下它的打印位置…

【iOS】单例、通知、代理

单例\通知\代理 单例模式什么是单例模式&#xff1f;单例模式的优缺点优点&#xff1a;缺点&#xff1a; 实现方式懒汉式&#xff1a;饿汉式&#xff1a; 通知代理总结KVO\KVC\单例模式\通知\代理\Block 单例模式 什么是单例模式&#xff1f; 单例模式在整个工程中&#xff0…

网络层中一些零碎且易忘的知识点

异构网络&#xff1a;指传输介质、数据编码方式、链路控制协议以及数据单元格式和转发机制不同&#xff0c;异构即物理层和数据链路层均不同RIP、OSPF、BGP分别是哪一层的协议&#xff1a; -RIPOSPFBGP所属层次应用层网络层应用层封装在什么协议中UDPIPTCP 一个主机可以有多个I…

Flutter 扩展函数项目实用之封装SizedBox

Flutter里扩展函数可以用简化代码写法&#xff0c;关键字为extension&#xff0c;伪代码写法如下&#xff1a; extension 扩展类名 on 扩展类型 { //扩展方法 } 在Flutter页面里实现控件间距会常用到SizedBox&#xff0c;可使用扩展函数封装来达到简化代码的目的&#xff0…

Java 递归实现汉诺塔小游戏

Java 递归实现汉诺塔小游戏 一、规则二、代码实现&#xff08;一&#xff09;思路&#xff08;二&#xff09;代码&#xff08;三&#xff09;复杂度 三、运行结果 一、规则 汉诺塔&#xff08;Tower of Hanoi&#xff09;是一个经典的数学问题&#xff0c;它涉及到将一堆盘子…

Bootloader

Bootloader 一段有下载和引导功能的程序 下载应用程序引导使MCU运行在应用程序中&#xff0c;只在有更新请求或者APP无效的时候才会激活 APP和Bootloader都存在Flash中Flash Driver用来擦除APP&#xff0c;下载临时存放在RAM中&#xff0c;下载完成后复位释放。一般随用随下&a…

Pytorch个人学习记录总结 玩俄罗斯方块の深度学习小项目

目录 前言 模型成果演示 训练过程演示 代码实现 deep_network tetris test train 前言 当今&#xff0c;深度学习在各个领域展现出了惊人的应用潜力&#xff0c;而游戏开发领域也不例外。俄罗斯方块作为经典的益智游戏&#xff0c;一直以来深受玩家喜爱。在这个项目中&…

Python web实战 | 用 Flask 框架快速构建 Web 应用【实战】

概要 Python web 开发已经有了相当长的历史&#xff0c;从最早的 CGI 脚本到现在的全栈 Web 框架&#xff0c;现在已经成为了一种非常流行的方式。 Python 最早被用于 Web 开发是在 1995 年&#xff08;90年代早期&#xff09;&#xff0c;当时使用 CGI 脚本编写动态 Web 页面…

spring启动流程 (6完结) springmvc启动流程

SpringMVC的启动入口在SpringServletContainerInitializer类&#xff0c;它是ServletContainerInitializer实现类(Servlet3.0新特性)。在实现方法中使用WebApplicationInitializer创建ApplicationContext、创建注册DispatcherServlet、初始化ApplicationContext等。 SpringMVC…