Python 官网静悄悄地发布了一则大消息:正式发布 Python 3.8.0!新版本较3.7版增加了一大波新功能和优化,来与 AI 大咖一起参与讨论吧~
近期,Python 官网宣布,正式发布 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.0 有哪些重要的改进呢?以下是是 Python 3.8 相比 3.7 的新增特性。
- PEP 572,赋值表达式
- PEP 570,仅限位置形参
- PEP 587,Python 初始化配置(改进的嵌入)
- PEP 590,Vectorcall:用于 CPython 的快速调用协议
- PEP 578, Python Runtime Audit Hooks
- PEP 574,具有外部数据缓冲区的 pickle 协议 5
- 与打字相关:PEP 591(最终限定词),PEP 586(文学类型)和 PEP 589(TypedDict)
- 用于已编译字节码文件的并行文件系统缓存
- 调试构建使用与发布构建相同的 ABI
- f - 字符串支持 = 用于自动记录表达式和调试文档
- 在 Windows 上,默认 asyncio 事件循环现在是 ProactorEventLoop
- 在 macOS 上,spawn 启动方法默认使用 multiprocessing
- multiprocessing 现在可以使用共享内存段来避免进程之间的酸洗成本
- typed_ast 被合并回 CPython
- LOAD_GLOBAL 速度加快了 40%
- pickle 现在默认使用协议 4,提高了性能
接下来,我们重点来看几个(来自Python 3.8 文档)。
赋值表达式
Python 3.8.0 有一个新的语法 :=,它将值赋给一个更大的表达式中的变量。它被亲切地称为“海象运算符”(walrus operator),因为它长得像海象的眼睛和象牙。
这个 “海象运算符” 在某些时候可以让你的代码更整洁,比如:
在这个示例中,赋值表达式可以避免调用 len () 两次:
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
类似的益处还可出现在正则表达式匹配中需要使用两次匹配对象的情况中,一次检测用于匹配是否发生,另一次用于提取子分组:
discount = 0.0
if (mo := re.search(r'(\d+)% discount', advertisement)):
discount