---
title: 'Python潮流周刊#4：Python 2023 语言峰会'
pubDate: 2023-05-31
author: '豌豆花下猫'
---

你好，我是猫哥。这里记录每周值得分享的 Python 及通用技术内容，本期是特别加更版，聚焦于 Python 官方 2023 年语言峰会的系列博客。

每年在 PyCon US 开始之前，Python 核心开发者、维护者和特邀嘉宾都会聚在一起参加 Python 语言峰会：这是一个为期一天的会谈活动，讨论 Python 的未来方向。

![Python语言峰会合影](https://img.pythoncat.top/2023-05-27_230914362.png)

今年的活动刚结束一个月，PSF 在本周一发布了多篇博客，回顾了峰会上的一些演讲内容。本期周刊将这些文章进一步作了摘要，分享给大家：

## 🦄文章&教程

1、[Three Talks on the C API](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-three.html)

这是关于 C API 的三场演讲。首先，Mark Shannon 和 Guido van Rossum 提及当前 C API 对第三方扩展的支持不够，经常在升级版本时破坏它们的功能。会上的结论是收集 C API 的问题清单，再制定解决方案。

另一场演讲是关于 HPy，它是一个用于编写 Python 扩展模块的新的 API，旨在解决 CPython C API 的一些限制和问题。它的好处是编写的扩展模块可以在不同的 Python 实现中运行，例如 CPython 和 PyPy。但是，演讲者想要官方将它作为推荐方案的想法没有得到支持，一方面的原因是它还不够完善，更重要的原因则是 Guido 评论的自上而下的方法行不通。HPy 似乎是挺不错的克服 C API 问题的方案，但它要取代 C API 的地位，还为时尚早。

2、[Making the Global Interpreter Lock Optional](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-making.html)

我们曾多次介绍过 nogil 项目，比如在周刊第二期就分享了一篇文章。在本次峰会上，nogil 的作者 Sam Gross 介绍了过去一年的进展，给出了 nogil 在性能上取得的令人满意的数据，还提出了更明确的路线图。大家最担心的依然是它提出编译成两个发行版、以及导致的调试困难等问题。（我们曾在 2 月份的[一篇文章](https://mp.weixin.qq.com/s/HHSjv0ZlAjq0ZvLHMI-W9g) 中讨论过）

3、[Towards Native Profiling for Python](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-towards.html)

Joannah Nanjekye 的演讲介绍了 Scalene，这是一个基于采样的 Python 分析器，可以在报告中区分机器代码和 Python 代码。使用 C、C++ 或 Rust 编写的 Python 扩展会被编译为机器代码，因此很难用采样的方式分析。Scalene 解决了一些技术难题，是最受欢迎的 Python 分析工具之一。演讲者试探性提出将 Scalene 的成果集成到标准库 `cProfile` 中，但没有得到响应。最后，这个库还被拿来跟 Python 3.12 中引入的 `perf` 分析器作比对。

![Sample-based Profiling](https://img.pythoncat.top/Nanjekye%20slide%20screenshot.png)

4、[What is the stdlib for?](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-what-is.html) 

Brett Cannon 提出的问题实际是：标准库应该扮演什么样的角色？Python 在发展初期自诩“自带电池”，包含了很多标准库，但随着第三方库越来越丰富以及 PyPI 使得安装库非常便利，很多标准库就不再有价值了。与会者的共识是：标准库应该专注于帮助用户编写更好的 Python 代码。这意味正在进行的标准库“瘦身计划”不会停，同时，未来的新标准库会更加规范引入。

5、[Pattern Matching, \_\_match\_\_, and View Patterns](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-pattern.html)

模式匹配语法是 3.10 版本的重大特性，但是 Sullivan 认为它的能力相当有限，因此提出了模式匹配的后续发展方向。与会者们普遍认同要增强模式匹配语法，然而，是否要引入一个新的魔术方法 \_\_match\_\_，或者采用别的方案，暂无定论。文中附有很多代码示例以及关于模式匹配的参考资料，对此话题感兴趣的同学可以去了解下。

6、[Python on Mobile: State of the Union](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-python.html)

Russell Keith-Magee 介绍了 BeeWare，它的目标是在 Android 和 iOS 等移动平台上轻松运行 Python。项目已得到 Anaconda 的投资支持，演讲者的诉求是希望得到 CPython 的“Tier-3”支持。会上讨论了 CI 测试套对移动平台的支持、sys.platform 在移动平台应该得到什么值、以及如何在移动平台发布 CPython 二进制文件，等等。手机上的 Python，这值得期待！

7、[Burnout is Real](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-burnout.html)

Guido 在峰会上聊了开源倦怠、解决倦怠的策略、以及如何避免倦怠等话题。很多时候，开源贡献者都是在用爱发电，然而大型开源项目还常常有复杂的场景、琐碎的讨论、多样的人际协作、时常冲突的观点或想法等，这些都容易让人疲倦、消磨人的热情。（PS.如果你关注技术新闻的话，会看到 Rust 社区最近闹得沸沸扬扬的核心开发者内讧事件。开源社区的发展也是一大难题，庆幸的是这届峰会反映出 Python 社区是在健康发展中）

![](https://img.pythoncat.top/2023-05-31.png)

8、[Lightning Talks](https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023.html)

介绍了三场简短的闪电演讲，主题有：让我们支持 LLVM-BOLT 作为官方功能、在 Python 中实现延迟导入的机制、让模块支持调用（已提出 PEP-713）。

以上就是今年峰会上讨论的重大议题，可以说都是非常有意义的话题。

有不少内容其实已经有了最新进展（毕竟活动已结束一个月），还有一些可能仍需较长时间才能尘埃落定（比如 nogil 和手机上的 Python）。

这里再补充两篇文章，有关于 Fast CPython 项目的进展：《[Faster CPython at PyCon, part one](https://lwn.net/Articles/930705)》、《[Faster CPython at PyCon, part two](https://lwn.net/Articles/931197/)》，Python 3.11 已经让大家看到了非常多的性能提升，未来版本更值得期待。

## 赞助&支持

内容创作不易，如果你觉得有帮助，请随意[赞赏](https://img.pythoncat.top/wechat_code.png)、[买杯咖啡](https://www.buymeacoffee.com/pythoncat) 进行支持！如果你喜欢本周刊，请转发分享给其他需要的同学～

另诚邀赞助者，欢迎通过私信联系。

## 关于周刊

Python 潮流周刊，精心筛选国内外的 200+ 信息源，为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景：帮助所有读者精进 Python 技术，并增长职业和副业的收入。

订阅方式：[Python猫](https://img.pythoncat.top/python_cat.jpg) | [RSS](https://pythoncat.top/rss.xml) | [邮件](https://pythoncat.substack.com) | [Github](https://github.com/chinesehuazhou/python-weekly) | [Telegram](https://t.me/pythontrendingweekly) | [Twitter](https://twitter.com/chinesehuazhou)

![](https://img.pythoncat.top/pythoncat.png)