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

博客原文:https://pythoncat.top/posts/2023-05-31-weekly4

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

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

1、Three Talks on the C API

这是关于 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

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

3、Towards Native Profiling for Python

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

4、What is the stdlib for?

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

5、Pattern Matching, __match__, and View Patterns

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

6、Python on Mobile: State of the Union

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

7、Burnout is Real

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

8、Lightning Talks

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

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

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

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

赞助&支持

内容创作不易,如果你觉得有帮助,请随意赞赏买杯咖啡或在爱发电进行支持!如果你喜欢本周刊,请转发分享给其他需要的同学~

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

关于周刊

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

订阅方式:Python猫 | RSS | 邮件 | Github | Telegram | Twitter

Python潮流周刊#4:Python 2023 语言峰会的更多相关文章

  1. Python面试题之python是一种什么语言及优缺点

    1.说说python是一种什么语言? 参考答案:python是一门动态解释性的强类型定义语言 编译型vs解释型 编译型优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译 ...

  2. 1.1 Python是一种什么样的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大.严格来说,Python是一门跨平台.开源.免费的解释型高级动态 ...

  3. Python快速入门之与C语言异同

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同. ...

  4. Python入门2(Python与C语言语法的不同、Notepad++运行Python代码)

    本篇博客主要介绍Python的基本语法与C语言不同的地方 [不同] 一.Python代码需要有严格的缩进,即C语言中所谓的良好的编码习惯.缩进不正确就会报错. 二.C语言需要圆括号 三.C语言每个语句 ...

  5. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  6. python是强类型还是弱类型语言

    几句话了解python特性 Python 是强类型的动态脚本语言 好多人对python到底是强语言类型还是弱语言类型存在误解,其实,是否是强类型语言只需要一句话就可以判别, 强类型:不允许不同类型相加 ...

  7. 尚学python课程---12、python语言介绍

    尚学python课程---12.python语言介绍 一.总结 一句话总结: 1.操作简单:简便计算:允许通过单个“import”语句后跟一个函数调用来完成复杂的计算.虽慢 2.库丰富:比如人工智能和 ...

  8. 重大改革!Python,最接近人工智能的语言~将被加入高考科目!

    就在前几天,和一位浙江省高校的信息技术老师聊天,我得到了一个震惊的消息: 明年,浙江省信息技术教材将不会在使用晦涩难懂的VB语言,而是改学更简单易懂的Python语言.也就是说, Python语言将纳 ...

  9. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  10. python之路:Day01 --- Python基础1

    本节内容 1.Python介绍 2.发展史 3.变量 4.用户输入 5.表达式 if...else语句 6.表达式 for 循环 7.表达式 while 循环 8.模块初识 9.数据类型初识 10.数 ...

随机推荐

  1. kafka的原理及集群部署详解

    kafka原理详解 消息队列概述 消息队列分类 点对点 组成:消息队列(Queue).发送者(Sender).接收者(Receiver) 特点:一个生产者生产的消息只能被一个接受者接收,消息一旦被消费 ...

  2. 你需要知道的 14 个常用的 JavaScript 函数

    1.确定任意对象的具体类型 众所周知,JavaScript 中有六种原始数据类型(Boolean.Number.String.Null.Undefined.Symbol)和一个对象数据类型.但是你知道 ...

  3. 中高等DP总结(更新中

    1.CF613D Kingdom and its Cities 题意:给定一棵树,每个询问给出一些关键点,要求删掉最少的点使这些点两两不联通,无解输出-1. 思路:先判无解:只要有一个关键点的父亲也是 ...

  4. LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周末是 LeetCode 第 338 场周赛,你参加了吗?这场周赛覆盖的知识点很多,第 ...

  5. [Linux/Git]比较两份文件的差异

    Command vim -d fileA fileB 或 git diff <oldCommitId> <newCommitId> X Recommend Files Matc ...

  6. mac上传文件到obs需要配置的环境

    本篇主要是使用mac对华为云 对象存储服务OBS 上传的一些说明. 配置环境 华为云obsutil下载地址 下载后得到.tar.gz格式的文件 解压 tar -xzvf xx.tar.gz 进入obs ...

  7. 6.Get和Post

    1.概述 URL是一个资源描述符,一个URL用于描述一个网上资源 Get用于获取/查询资源信息,Post用于更新资源信息 2.联系和区别 2.1.Get后退刷新无害,Post需要重新提交: 2.2.G ...

  8. 机器学习(六):回归分析——鸢尾花多变量回归、逻辑回归三分类只用numpy,sigmoid、实现RANSAC 线性拟合

    [实验1 回归分析] 一. 预备知识 使用梯度下降法求解多变量回归问题 数据集 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录 ...

  9. Map集合案例:统计输入多个key值出现的次数

    某商店想统计一下一天内所售出的商品以及商品的数量,请编写程序帮助实现,并展示.通过键盘录入商品名称模拟售出的商品, 录入一次表示商品售出一次,直到录入end结束.运行效果如下: 代码:

  10. 指针和引用(pointer and reference),传值和传址

    pass by adress pass by reference和pass by pointer的共同点都在于传址,都是对于对象的地址的复制,而不会对对象进行产生副本的操作. pass by refe ...