Python猫

Python 潮流周刊#50:我最喜欢的 Python 3.13 新特性!

这里分享的是 Python 潮流周刊第 50 期,原文发布于 2024-05-12。我们的付费专栏内容在发布一年后会免费开源,不少内容依然值得回看,愿大家读有所获。点击文末“阅读原文”,体验更佳。

温馨提示:在微信关注 Python猫,发送“优惠券”,即可领取 9 折优惠券,订阅专栏可享 15 元优惠。

本期分享了 12 篇文章,11 个开源项目,2 则音视频。

🦄文章&教程

1、我最喜欢的 Python 3.13 新特性[1]

Python 3.13 在进入功能冻结期前,添加了一个全新的 REPL,作者表示这是 Python 3.13 中他最喜欢的特性。新的 REPL 确实让人眼前一亮:彩色提示、下一行自动缩进、tab 自动缩进 4 格、exit 和 help 不用再加括号、支持块级历史记录、支持粘贴代码块……这些新功能也是我一直想要的,现在终于要支持了。遗憾的是,它还不支持 Windows 系统!

2、Python 3.13 新功能盘点介绍[2]

Python 3.13 beta 1 版本已发布,改动内容真不少呢,文章做了一个简单盘点:改进的 REPL、自由线程(无 GIL Python)、JIT 编译器、python -m random 生成随机数、对 iOS 的 tier 3 级支持,等等等。(附:所有变更内容,详见官方文档 What's New In Python 3.13[3])

3、Python Asyncio 工作原理:从零实现一个简化版 Asyncio[4]

作者用生成器、async和await关键字,逐步从零构建,成功模拟出asyncio的事件循环和任务调度机制,可加深你对asyncio内部工作原理的理解。(附:文章的中文翻译[5])

4、友好的 Python:封装和复用[6]

这是一篇标题友好的无情吐槽文,被吐槽的是火山引擎的 TTS 接口及其 SDK 设计。作者详细分析了对方代码的问题,给出了改进建议和原则,最后还贴心给出了 62 行的改进版本,远胜原始的近 500 行的版本。

5、零基础入门 Python 文件处理篇——实现一个简单的文件搜索引擎[7]

文章收集了很多 Python 文件操作的知识和代码片段,涉及基础和进阶的各类文件操作,可以查漏补缺。最后还演示了从给定目录下模糊搜索一个文件的代码。

6、用 HTMX 和 Django 开发一个 Connect Four 游戏[8]

一个用 Django + HTMX 开发 Web 小游戏(Connect Four)的简单教程。通过游戏项目来学习编程,应该是效果不错的方式。

7、用 wxPython 开发一个简单的计算器[9]

计算器是很好的用于练习 Python GUI 编程的项目,类似的教程在网上有不少,但是像这篇那么详细介绍每一段代码的应该不多。

8、学生在入门数据科学时常犯的错误[10]

在入门数据科学时,哪些错误时常会发生?这篇论文对 500 多份样本作定性分析,指出了这几类错误:逻辑错误、语义错误、次优编码、对语言和环境的误解。

9、使用“不安全的 Python”加速 Numpy 代码 100 倍[11]

“Unsafe Python“是指可能导致安全风险或内存安全问题的技术。作者使用pygame 和OpenCV 来处理图像缩放任务,发现性能差距很大,原因是由numpy 数组的内存布局(strides)引起的,最后通过优化内存访问模式来提升性能。

10、Python 字典详细的历史演变过程[12]

这是在 Python Discuss 论坛上的一篇帖子,作者想梳理字典的技术细节和历史演变,但是发现字典在不同版本的插槽数、扩容机制和初始大小等方面差别很大。

11、重新发明 Python notebook 的经验教训[13]

marimo 是作者开发的一款 notebook 产品,是 Jupyter notebook 的竞品,已经被斯坦福大学和贝莱德等机构使用。文章介绍了其三项设计原则:可重现、可维护、多用途,为什么要采用这些设计,以及在实现的过程中学到的几点经验教训。

12、Python 软件基金会新闻:2022 和 2023 资助计划的透明度报告[14]

PSF 发布了前两年对 Python 社区的资助计划的透明度报告。我们周刊第 30 期分享过泛非 Python 社区的一封公开信,就是质疑 PSF 的资助计划。报告公布了各项支出、趋势、百分比等数据,特别分享了关于非洲早年的几起资助。

🐿️项目&资源

1、pywinassistant:用自然语言控制 Windows 用户界面[15]

这是一个大动作模型(Large Action Model),使用自然语言操作 Windows 系统。目前支持所有通用的 win32api 应用。

2、chinese-calendar:判断一天是不是法定节假日/工作日[16]

判断某年某月某一天是不是工作日/节假日,支持 2004年 至 2024年。(附:另一个同名的项目chinese-calendar[17],是个农历/阴历与阳历/公历的转换与查询工具)

3、Oven:探索 Python PyPI 包[18]

支持搜索和查看 PyPI 上的软件包,支持查看 pip/pdm/rye/poetry 安装命令,支持查看每周下载量和趋势图。

Image

4、tetos:适用于多种 TTS 服务的统一接口[19]

使用一套统一的接口来对接不同的文本转语音(TTS)服务商,已支持 Edge-TTS、OpenAI TTS、Azure TTS、Google TTS、火杀引擎、百度 TTS、Minimax TTS。

5、relax-py:又一个 Python Web 框架[20]

Python Web 开发框架,基于 Starlette + htmx + tailwindcss,具有热模块替换(HMR)、基于路径函数的 URL 定位器、依赖注入等特性。

6、哈佛大学 2024 年 CS50 线上课程[21]

哈佛大学的 CS50 是一个计算机科学入门课程,有 11 周课时安排,免费提供所有学习资源,可颁发课程证书。今年的变化是引入了由 ChatGPT 支持的对话机器人,可帮助回答与课程相关的问题。

Image

7、portr:专为团队设计的开源的 ngrok 替代方案[22]

Portr 是一种隧道解决方案,可向互联网公开本地 http、tcp 和 websocket 连接。它利用 SSH 远程端口转发来保证隧道连接的安全性。(star 2K)

8、py-compress-compare:对比分析 zlib、LZ4、Brotli 和 Zstandard[23]

这个项目对四个流行的 Python 压缩库(zlib、LZ4、Brotli 和 Zstandard)进行对比,衡量了压缩比、压缩时间、解压时间等指标。

9、pyspread:用 Python 开发的电子表格,可支持 Python 代码[24]

使用 Python 开发的 Excel,单元格中支持 Python 表达式,并且每个单元格返回的都是一个 Python 对象。可从单元格访问 Python 模块,包括 Numpy;支持导出 CSV、SVG 和 PDF 等格式。

pyspread界面
pyspread界面

10、PgQueuer:基于 PostgreSQL 的任务队列库[25]

一个极简的 Python 任务队列库,使用 PostgreSQL 的 LISTEN/NOTIFY 来管理任务作业,使用 pg 的FOR UPDATE SKIP LOCKED 实现可靠的并发处理。

11、你用人工智能做过的最实用的事情是什么?[26]

除了用作图像生成和简单的问答,你还用 AI 做过什么有用的事情?这是 Reddit 的热门帖子,可以看看别人都开发过什么项目,从而找找个人项目的创意。

🐢播客&视频

1、core.py[27] Ep 10:开发者聊 Python 3.13 的 REPL[28]

Pablo Galindo 和 Łukasz Langa 开发了 Python 3.13 中新的 REPL,他们在播客中聊了开发这个特性的故事,也分享了 CPython 最近改动的一些特性,比如新的 JIT 和 Python 对 iOS 的支持等。

2、The Python Show 40 - 与 Antonio Cuni 一起聊开源开发[29]

这期播客的嘉宾是 PyScript、pdb++、pypy、HPy 和 SPy 等开源项目的贡献者,播客聊了参与开源开发的相关话题。

参考资料
[1] 

我最喜欢的 Python 3.13 新特性: https://treyhunner.com/2024/05/my-favorite-python-3-dot-13-feature/

[2] 

Python 3.13 新功能盘点介绍: https://iscinumpy.dev/post/python-313/

[3] 

What's New In Python 3.13: https://docs.python.org/zh-cn/3.13/whatsnew/3.13.html

[4] 

Python Asyncio 工作原理:从零实现一个简化版 Asyncio: https://jacobpadilla.com/articles/recreating-asyncio

[5] 

中文翻译: https://juejin.cn/post/7366945260792447014

[6] 

友好的 Python:封装和复用: https://frostming.com/2024/friendly-python-reuse/

[7] 

零基础入门 Python 文件处理篇——实现一个简单的文件搜索引擎: https://juejin.cn/post/7363454217191686181

[8] 

用 HTMX 和 Django 开发一个 Connect Four 游戏: https://www.photondesigner.com/articles/connect4-htmx

[9] 

用 wxPython 开发一个简单的计算器: https://www.pythonpapers.com/p/creating-a-calculator-with-wxpython

[10] 

学生在入门数据科学时常犯的错误: https://austinhenley.com/blog/datasciencemistakes.html

[11] 

使用“不安全的 Python”加速 Numpy 代码 100 倍: https://yosefk.com/blog/a-100x-speedup-with-unsafe-python.html

[12] 

Python 字典详细的历史演变过程: https://discuss.python.org/t/developing-a-detailed-historical-understanding-of-python-dict-implementations/52618

[13] 

重新发明 Python notebook 的经验教训: https://marimo.io/blog/lessons-learned

[14] 

Python 软件基金会新闻:2022 和 2023 资助计划的透明度报告: https://pyfound.blogspot.com/2024/05/psf-grants-program-2022-2023.html

[15] 

pywinassistant:用自然语言控制 Windows 用户界面: https://github.com/a-real-ai/pywinassistant

[16] 

chinese-calendar:判断一天是不是法定节假日/工作日: https://github.com/LKI/chinese-calendar

[17] 

chinese-calendar: https://github.com/overtrue/chinese-calendar

[18] 

Oven:探索 Python PyPI 包: https://pyoven.org/

[19] 

tetos:适用于多种 TTS 服务的统一接口: https://github.com/frostming/tetos

[20] 

relax-py:又一个 Python Web 框架: https://github.com/crpier/relax-py

[21] 

哈佛大学 2024 年 CS50 线上课程: https://cs50.harvard.edu/x/2024/

[22] 

portr:专为团队设计的开源的 ngrok 替代方案: https://github.com/amalshaji/portr

[23] 

py-compress-compare:对比分析 zlib、LZ4、Brotli 和 Zstandard: https://github.com/dhilipsiva/py-compress-compare

[24] 

pyspread:用 Python 开发的电子表格,可支持 Python 代码: https://pyspread.gitlab.io/

[25] 

PgQueuer:基于 PostgreSQL 的任务队列库: https://github.com/janbjorge/PgQueuer

[26] 

你用人工智能做过的最实用的事情是什么?: https://www.reddit.com/r/ArtificialInteligence/comments/1ceaftk/whats_the_most_practical_thing_you_have_done_with/

[27] 

core.py: http://core.py/

[28] 

Ep 10:开发者聊 Python 3.13 的 REPL: https://podcasters.spotify.com/pod/show/corepy/episodes/Episode-10-The-Interactive-REPL-e2j788i/a-ab7uiak

[29] 

The Python Show 40 - 与 Antonio Cuni 一起聊开源开发: https://www.pythonshow.com/p/40-open-source-development-with-antonio

Image
Image