金融行业专业分析师,caf金融分析师报考条件

  

  机器心脏报告   

  

  编辑:陈萍   

  

  你不必自己想办法实现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的创始人吉多范罗苏姆提交了第一个显示switch语句的文档,命名为结构化模式匹配,如PEP 634所示。   

  

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

  

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

  

  With (ctxmanager1 () asexample1,ctxmanager2 () asexample2,ctxmanager3 () asexample3,):错误消息-NameErrors:当打印由解释器引起的NameError时,PyErr_Display()将在抛出异常的函数中提供相似变量名的建议:   

  

  Python  3.10来了,switch语法终于出现   

  

  PEP 634结构化模式匹配:模式匹配允许用户在匹配后遵循几个case语句。当程序被执行时   

match-case 时,有匹配的语句,程序就会进入相应的 case 语句来执行操作。

match-case 语法和操作:模式匹配的通用语法是:

match subject:    case <pattern_1>:        <action_1>    case <pattern_2>:        <action_2>    case <pattern_3>:        <action_3>    case _:        <action_wildcard>

match 语句接受一个表达式,并将其值与作为一个或多个 case 块给出的连续模式进行比较。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("I'm a teapot")        make_coffee()    case _:        print("Code not found")

下图是 match-case 语句执行示意图。程序会检查多个 case 条件,并根据在变量 http_code 中找到的值执行不同的操作。

Python 3.10来了,switch语法终于出现

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

http_code = "418"if http_code == "418":    print("OK")    do_something_good()elif http_code == "404":    print("Not Found")    do_something_bad()elif http_code == "418"    print("I'm a teapot")    make_coffee()else:    print("Code not found")

然而,通过使用 match-case 语句,删除了 http_code == 的重复执行,当测试许多不同的条件时使用 match-case,http_code == 看起来更加清晰。

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

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

match-case 可以说是此次 Python 3.10 beta 版本最大的亮点。对于这种表达式,有人喜欢,有人憎恶。在 Python 还不支持 switch-case 之前,大家可能都是使用字典进行相关操作。有人说 switch 除了读着方便,没什么优点;还有人说 Python 的闭包机制,dict 的 value 可以是带闭包的函数,这样就使得表达能力比 switch-case 更上一层楼;但总归 Python 3.10 beta 版本纳入了 switch-case,为开发者提供了另一种选择。

更多详细信息,请参考:https://docs.python.org/3.10/whatsnew/3.10.html

参考链接:https://towardsdatascience.com/switch-case-statements-are-coming-to-python-d0caf7b2bfd3

相关文章