Python 3.8.0

  介绍

这期内容当中小编将会给大家带来有关Python 3.8.0,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Python官网静悄悄地发布了一则大消息:正式发布Python 3.8.0 !新版本较3.7版增加了一大波新功能和优化。

今天,<强> Python官网宣布,正式发布Python 3.8.0 !

<强>  Python 3.8.0

Python  3.8.0 现已推出。   代表,Python 开发社区和,Python  3.8,发布团队,我们很高兴地宣布,Python  3.8.0 现在已经可以使用。   Python  3.8.0 是,Python 语言的最新正式版,包含许多新功能和优化。   Python 的大多数第三方库也应该很快就会支持,3.8.0 软件包。   有关,3.8,版本功能的更多信息,请参阅,“Python  3.8,新特性”,文档。所有更改的详细信息都可以在更改日志中找到。   从,2019,年,12,月开始,3.8,系列的维护版本将定期每两个月发布一次。   我们希望您喜欢,Python  3.8 !   感谢所有帮助,Python 开发和这些发布的志愿者!欢迎通过志愿或组织捐赠支持,Python 软件基金会的工作。

那么,这次新发布的Python 3.8.0有哪些重要的改进呢?以下是是Python 3.8相比3.7的新增特性。

<强> PEP 572,赋值表达式

<强> PEP 570,仅限位置形参

<强> PEP 587, Python初始化配置(改进的嵌入)

<强> PEP 590, Vectorcall:用于CPython的快速调用协议

<强> PEP 578, Python运行时审计钩子

<强> PEP 574,具有外部数据缓冲区的泡菜协议5

<强>·与打字相关:PEP 591(最终限定词)、PEP 586(文学类型)和PEP 589 (TypedDict)

<强>·用于已编译字节码文件的并行文件系统缓存

<强>·强调试构建使用与发布构建相同的ABI

<强>·强f -字符串支持=用于自动记录表达式和调试文档

<强>·在Windows上,默认asyncio事件循环现在是ProactorEventLoop

<强> 在macOS上,产卵启动方法默认使用多处理

<强>·多处理现在可以使用共享内存段来避免进程之间的酸洗成本

<强>· typed_ast被合并回CPython的

<强>· LOAD_GLOBAL速度加快了40%

<强>·泡菜现在默认使用协议4,提高了性能

接下来,我们重点来看几个(来自Python 3.8文档)。

<强>赋值表达式

Python 3.8.0有一个新的语法:=⑺蹈掣桓龈蟮谋泶锸街械谋淞俊K磺浊械爻莆昂O笤怂惴?海象算子),因为它长得像海象的眼睛和象牙。

 Python 3.8.0

这个“海象运算符”在某些时候可以让你的代码更整洁,比如:

在这个示例中,赋值表达式可以避免调用len()两次:

if  (n :=, len (a)),祝辞,10:   ,,,print (f" List  is  too  long  ({n},元素,expected  & lt;=, 10)“)

类似的益处还可出现在正则表达式匹配中需要使用两次匹配对象的情况中,一次检测用于匹配是否发生,另一次用于提取子分组:

discount =0.0   if  (mo :=, re.search (" # 39; (\ d +) %,折扣# 39;,,广告)):   ,,,discount =,浮子(mo.group (1)),/, 100.0

此运算符也适用于配合而循环计算一个值来检测循环是否终止,而同一个值又在循环体中再次被使用的情况:

#,Loop 配套;fixed  length 块   while  (block :=, f.read (256)), !=, & # 39; & # 39;:   ,,,过程(块)

另一个值得介绍的用例出现于列表推导式中,在筛选条件中计算一个值,而同一个值又在表达式中需要被使用:

[clean_name.title (), for  name 拷贝的名称   ,,,if  (clean_name :=,正常化(& # 39;nfc # 39;,,名字)),拷贝allowed_names]

请尽量将海象运算符的使用限制在清晰的场合中,以降低复杂性并提升可读性。

了解详情:https://www.python.org/dev/peps/pep - 0572

(由豪斯在bpo - 35224中贡献。)

<强>仅限位置形参

新增了一个函数形参语法/用来指明某些函数形参必须使用仅限位置而非关键字参数的形式。这种标记语法与通过帮助()所显示的使用拉里·黑斯廷斯的论点诊所工具标记的C函数相同。

Python 3.8.0