python的switch用法,python3 switch语句

  python的switch用法,python3 switch语句

  本文转载自无良程序员。

  你不必自己想办法实现switch函数。

  Python是从事数据科学和人工智能的人首选的编程语言。根据最近的一项调查,27%的程序员开发职位要求掌握Python,而今年年初这一比例为18.5%。

  Python之所以受欢迎,在于它的直观能力:该语言拥有大量的库,足够高的生产力,并且相对容易学习。去年10月,Python 3.9版本正式发布。从字典更新/合并到添加新的字符串方法,再到zoneinfo库的引入,Python 3.9添加了许多新特性。

  Python3.10的第二个alpha版本也于去年11月初发布。与不久前发布的3.9版本相比,新版本在类型注释扩展、zip、位计数和字典映射上有了新的改进。就在昨天,Python 3.10 beta发布。也许新测试版最大的亮点是switch-case语句的引入。

  Python 3.10 beta 版新改进

  Switch语句存在于很多编程语言中,但是Python编程语言不支持Switch语句。早在2016年就提出了PEP 3103,建议Python支持switch-case语句。但是在调查中发现,很少有人支持这个特性,Python开发者放弃了它。

  2020年,Python的创始人ckdmht van Rossum提交了第一个显示switch语句的文档,命名为结构化模式匹配,如PEP 634所示。

  现在,随着Python 3.10测试版的发布,终于包含了switch-case语句。

  带括号的上下文管理器:现在支持在上下文管理器中使用括号跨多行继续。您也可以在包含组的末尾使用逗号。

  使用(CtxManager1()作为示例1,CtxManager2()作为示例2,CtxManager3()作为示例3)时:

  Error-NameErrors:在打印解释器抛出的NameError时,PyErr_Display()会在抛出异常的函数中提供类似变量名的建议:

  PEP 634结构化模式匹配:模式匹配允许用户在匹配后遵循几个case语句。当程序执行match-case时,如果有匹配的语句,程序会输入相应的case语句来执行操作。

  匹配大小写语法和操作:模式匹配的一般语法是:

  匹配主题:格模式_1:动作_1格模式_2:动作_2格模式_3:动作_3格_:动作_通配符

  match语句接受一个表达式,并将其值与作为一个或多个case块给出的连续模式进行比较。匹配案例的示例如下:

  http _ Code= 418 match http _ Code:case 200 :print( OK )do _ something _ good()case 404 :print( Not Found )do _ something _ bad()case 418 :print(我是茶壶)make _ coffee()case _:print( Code Not Found )

  下图显示了match-case语句的执行图。该程序将检查多个案例条件,并根据变量http_code中的值执行不同的操作。

  同样,您也可以使用一组if-elif-else语句来构建相同的逻辑:

  http _ Code= 418 if http _ Code== 418 :print( OK )do _ something _ good()elif http _ Code== 404 :print(未找到)do _ something _ bad()elif http _ Code== 418 print(我是茶壶)make_coffee()else: print(未找到代码)

  但是,通过使用match-case语句,http_code==的重复执行被删除。当在测试许多不同的条件时使用match-case时,http_code==看起来更清楚。

  我们可以通过一个简单的例子来了解模式匹配:用C、Java或JavaScript(以及许多其他语言)中的switch语句将对象(数据对象)与文本(模式)进行匹配。switch语句通常用于将对象/表达式与包含文本的case语句进行比较。

  虽然使用嵌套if语句的命令式指令系列可以用来完成类似于结构模式匹配的任务,但不如声明式方法清晰。相反,声明性方法声明匹配要满足的条件,并且通过它们的显式模式更具可读性。虽然结构模式匹配可以以最简单的形式用于将变量与case语句中的文本进行比较,但它对Python的真正价值在于它对对象类型和大小的处理。

  Match-case可以说是Python 3.10这个测试版的最大亮点。对于这种表达,有人喜欢,有人讨厌。在Python不支持switch-case之前,大家大概都是用字典进行相关操作。有人说switch除了方便阅读之外没有任何优势;还有人说Python的闭包机制,dict的值可以是带闭包的函数,让表达能力比switch-case多上一层楼;但是Python 3.10的测试版已经包含了switch-case,为开发者提供了另一种选择。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: