---
title: 'Python 潮流周刊#14：Lpython 高性能编译器、Python 与 JavaScript 实现互通'
pubDate: 2023-08-05
author: '豌豆花下猫'
---

你好，我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容，本期分享的全部是英文材料。（标题取自其中两则分享，不代表全部内容都是该主题，特此声明。）

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

**周刊已开通 Telegram 频道**，欢迎加入：[https://t.me/pythontrendingweekly](https://t.me/pythontrendingweekly)

## 🦄文章&教程

1、[LPython：新颖、高性能、适用于多平台的 Python 编译器](https://lpython.org/blog/2023/07/lpython-novel-fast-retargetable-python-compiler/) 

最新发布的一个Python 编译器（当前为 alpha 版本），目标是打造高性能的 Python。可以将带有类型提示的 Python 代码编译为优化的机器代码，支持提前编译（AOT）与即时编译（JIT），支持与 CPython 互操作，支持多种后端，例如 LLVM、C、C++、WASM、Julia 和 x86。

2、[Cython 3.0.0 的文档](https://cython.readthedocs.io/en/latest/src/changes.html) 

Cython 是一门专用于提升 Python 性能的编程语言，最近从 0.29.x 版本直接升到了 3.0.0 版本，带来了大量的问题修复以及新特性，这份 changelog 文档非常丰富。（附一篇[详解历时五年的 Cython3.0 都发生了哪些变化](https://mp.weixin.qq.com/s/CcC1QEojybyRpzUUiJxdAw) ，总结了这个版本的几项较大的变化点。）

3、[Python 中使用 Pandas 和 NumPy 计算变异系数](https://www.marsja.se/coefficient-of-variation-in-python-with-pandas-numpy/) 

变异系数（Coefficient of Variation，CoV）是一种统计量，用于评估数据集相对于其均值的相对变异性或离散程度。文章介绍了变异系数的公式、解释、意义和实际用途，以及如何用 Pandas 和 Numpy 来计算变异系数。

4、[Jupyter 中的生成式 AI](https://blog.jupyter.org/generative-ai-in-jupyter-3f7174824862) 

Jupyter Notebook 也支持 AI 功能了，目前免费提供。官博这篇教程指导了如何在聊天界面使用 Jupyter AI 完成各项任务。支持来自 AI21、Anthropic、AWS、Cohere、HuggingFace Hub 和 OpenAI 的大语言模型。

5、[Python 中的结构化模式匹配](https://www.tartley.com/posts/structured-pattern-matching-in-python/) 

Python 3.10 版本的模式匹配语法，你用过了么？这篇文章探究了这种语法的相关要素（基本结构、每种模式的演示），也思考了是否真必要用模式匹配语法替换`elif` 。

6、[使用 Rich 的 Inspect 查看 Python 对象属性](https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/) 

Rich 是一个在终端使用富文本和美观样式的库（本期周刊的“项目&资源”中有介绍），这篇文章介绍了它的 inspect() 函数，可以查看 Python 对象的属性以及可用的 API。

![查看文件对象的属性与方法](https://img.pythoncat.top/2023-08-05_rich_inspect.png)

7、[Python 包版本控制的怪癖](https://sethmlarson.dev/pep-440) 

一个冷门话题，讨论了 Python 包的版本号。我才知道 Python 包版本命名竟有 6 个组成部分！文章大部分内容是对 [PEP-440（版本标识和依赖规范）](https://peps.python.org/pep-0440/) 的介绍与解读，最后也介绍到了 Wheel 包的版本命名规则。

8、[文件 I/O 并发编程的模式](https://superfastpython.com/file-io-concurrent-patterns/) 

使用并发编程来提升文件 I/O 操作的性能，具体有哪些使用手段呢？文章介绍了四种模式（单线程、线程池/进程池、批处理任务、在进程池中使用线程池），并讨论了该如何选择更合适的模式。

9、[如何高效地阅读 Python 代码？](https://mostlypython.substack.com/p/reading-code?nthPub=581) 

对于所有程序员来说，阅读代码都是一项必备能力。但是，如何高效地阅读与理解别人的代码呢？这篇文章介绍了一些阅读策略与技巧，同时站在阅读者的视角，也有助于我们写出更具可读性、可理解性的代码。

10、[如何在 Python 中用 JPype 与 Pyjnius 调用 Java 代码？](https://www.askpython.com/python/examples/call-java-using-python) 

Java 和 Python 各有优点，如何能将它们结合起来呢？这篇文章介绍了如何用 **JPype** 和 **Pyjnius** 等方式来调用 Java，同时指出实现方案所面临的挑战和限制。

11、[如何在 Python 中调用 JavaScript 代码？](https://dev.to/willp/call-javascript-code-in-python-551a) 

文章介绍了 [PythonMonkey](https://github.com/Distributive-Network/PythonMonkey) 库的用法，实现在 Python 中加载与运行 JavaScript 代码，以及在 Python 中使用 WASM。（附作者的其它文章：[使用 WebAssembly 在 Python 中执行 Rust 代码](https://medium.com/@willkantorpringle/executing-rust-in-python-using-webassembly-d361eb5583da) 、[使用 WebAssembly 在 Python 中调用 C 函数](https://medium.com/@willkantorpringle/calling-c-function-from-python-using-webassembly-63a305248951)）

12、[使用 Textual 构建 ChatGPT TUI 应用程序](https://chaoticengineer.hashnode.dev/textual-and-chatgpt) 

本期周刊有好几则内容与 [Textual](https://github.com/Textualize/textual) 相关！与图形用户界面（GUI）相比，文本用户界面（TUI）响应更快、系统要求更低和更易自动化。这篇文章使用 Textual 构建了一个 ChatGPT 对话工具。

![在终端与ChatGPT对话](https://img.pythoncat.top/2023-08-05_tui.png)

13、[Python 中的向量数据库入门](https://code.dblock.org/2023/06/16/getting-started-with-vector-dbs-in-python.html) 

如何在 Python 中使用当前热门的向量数据库呢？这篇文章介绍了使用 10 多种数据库来索引及搜索向量数据，包括 ClickHouse、OpenSearch、pgVector、Pinecone、Redis 等等。

14、[CPython 的编译过程是怎样的？](https://dev.to/cwprogram/a-tour-of-cpython-compilation-cd5) 

CPython 是 Python 官方的解释器实现，这篇长文介绍了它的编译过程，包括语法解析、抽象语法树、字节码、pyc 解析等内容。

15、[介绍新开源的 Python 调试器 pdbp (Pdb+)！](https://dev.to/mintzworld/the-new-pdbp-pdb-python-debugger-2blc) 

作者指出了 Python 内置的 **pdb** 与其它调试器（如 **ipdb、pdbpp**）的缺点，介绍了他开发的 pdbp 所作的修复和改进，以及简单的入门使用。这个库依赖项很少，功能强大，值得一试。

🎁**Python潮流周刊**🎁已免费发布了 14 期，访问下方链接，即可查看全部内容：[https://pythoncat.top/tags/weekly](https://pythoncat.top/tags/weekly) 

如果你觉得周刊有价值，请表达小小心意，赞赏一下猫哥吧~~

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

## 🐿️项目&资源

1、[PyFlo：一个很有趣的 Python 入门教学网站](https://pyflo.net/) 

这个网站非常惊艳，推荐大家去体验下！主页是一幅学习线路图，画了不同的学习分支和内容分类，还有几个编程项目挑战，点击每个节点则跳转到对应内容的页面。（借鉴此网站的创意，开发面向中文读者的教学网站，应该会挺有趣）

![路线图的一部分](https://img.pythoncat.top/2023-08-05_pyflo.png)

2、[Pandas Tutor：可视化 Pandas 执行过程的网站](https://pandastutor.com/) 

你或许已知道 [Python Tutor](https://pythontutor.com/)，它是一个提供了在线交互式 Python 编程环境的教学工具。这里介绍的 Pandas Tutor 也是类似的网站，它允许在浏览器中编写 Pandas 代码，并可视化数据的转换过程。 （附一篇文章，两位作者介绍了他们将 [Pandas Tutor 移植到 Pyodide ](https://blog.pyodide.org/posts/pandastutor/) 的工作，以便大规模推广数据科学的教学）

![可视化数据的处理过程](https://img.pythoncat.top/2023-08-04_pandastutor.png)

3、[ploomber-sql：使用 SQL 和 Jupyter 开发端到端的应用](https://ploomber-sql.readthedocs.io/en/latest/index.html) 

这是托管在 Read The Docs 上的一个教学课程，介绍了如何使用 SQL 和 Jupyter 作数据分析，包含操作数据库、高级查询技术、数据可视化（**seaborn、plotly、ggplot**）、项目打包部署与监控等章节。它出自于开源项目 [ploomber](https://github.com/ploomber/ploomber) （star 3.1K），后者是一个快速构建数据管道的项目。

4、[memray：Python 的内存分析器](https://github.com/bloomberg/memray) 

这是周刊[第 12 期](https://pythoncat.top/posts/2023-07-22-weekly)介绍过的 **pystack** 的姊妹项目，可以跟踪 Python 代码、C/C++ 扩展模块和 Python 解释器本身中的内存分配，支持本机模式与实时查看模式，可生成多种类型的报告。提供了 Pytest 插件 [pytest-memray](https://github.com/bloomberg/pytest-memray)，可以在运行测试套后查看内存报告。（star 11K）

5、[textual-paint：终端中的 MS Paint](https://github.com/1j01/textual-paint) 

**MS Paint** 是微软公司开发的一款简单的图像编辑软件。这个项目是 MS Paint 风格的 TUI 图像编辑器，支持在终端中打开与保存图像、MS Paint 中的所有工具、调色板、画笔预览等等功能。

6、[rich：在终端中提供富文本和美观的样式](https://github.com/Textualize/rich) 

Rich 让终端不再单调，可以绘制漂亮的表格、进度条、markdown、源代码语法高亮以及栈回溯信息等。（star 44.2K）下面这张效果图，囊括了它的主要特色：

![Rich的功能效果图](https://img.pythoncat.top/2023-08-05-rich.png)

7、[json-lineage：支持解析大型 JSON 文件的工具](https://github.com/Salaah01/json-lineage) 

这是用 Rust 开发的 JSON 解析库，主要解决大文件无法加载到内存的痛点，通过将 JSON 转化成 JSONL 格式，解决内存消耗问题。测试表明，处理一个 500MB 文件，Python 标准库要用 2GB 内存，但这个库仅需 1.5MB，而且速度差异很小。

8、[PythonMonkey：嵌入到 Python VM 中的 JavaScript 引擎](https://github.com/Distributive-Network/PythonMonkey) 

前文已出现过 PythonMonkey，它将 Mozilla 的 SpiderMonkey JavaScript 引擎嵌入到 Python 虚拟机中，利用Python 引擎提供 JS 主机环境。这个项目的目标包括在 Python 中调用 JavaScript 库和在 JavaScript 中调用 Python 库，如果能有效打通这两种语言的生态，前途不可估量！

9、[cudf：GPU 数据帧库](https://github.com/rapidsai/cudf) 

cuDF 基于 **Apache Arrow** 列式内存格式构建，是一个 GPU DataFrame 库，用于加载、连接、聚合、过滤和以其它方式操作数据。提供了类似 pandas 的 API，无需了解 CUDA 编程的细节。（star 5.8K）

10、[distill-sd：更小更快的 Stable Diffusion](https://github.com/segmind/distill-sd) 

对 Stable Diffusion 作“知识蒸馏”后的小型化版本，可生成与 SD 质量相当的图像，同时速度更快、空间占用更少。

11、[HQTrack：高质量追踪视频中的任何事物](https://github.com/jiawen-zhu/HQTrack) 

一个对视频中对象作高性能跟踪和分割的框架，由视频多目标分割器（VMOS）和掩模优化器（MR）组成，可以同时跟踪多个目标物体并输出准确的物体掩模。

12、[awesome-mlops：很棒的 MLOps 工具精选列表](https://github.com/kelvins/awesome-mlops) 

一个 awesome 系列的 MLOps 精选列表，包含各种各样的项目/工具，以及文章、书籍、活动、播客和网站等等资源。

## 🐢播客&视频

1、[Talk Python To Me #425：终极的 Python 内存分析器 Memray](https://talkpython.fm/episodes/show/425/memray-the-endgame-python-memory-profiler) 

本期的“项目&资源”介绍了 Memray，这里的播客节目邀请了两位嘉宾深入聊了这个项目。

## 🐱赞助&支持

如果你觉得周刊有价值，请随意[赞赏](https://img.pythoncat.top/wechat_code.png) 或 [买杯咖啡](https://www.buymeacoffee.com/pythoncat) 进行支持！

如果你喜欢周刊，请分享给其他需要的同学，让更多人可以从中受益～

## 🐼欢迎订阅

- [微信公众号](https://img.pythoncat.top/python_cat.jpg)：除更新周刊外，还发布其它原创作品，并转载一些优质文章。（可加好友，可加读者交流群）
- [博客](https://pythoncat.top) 及 [RSS](https://pythoncat.top/rss.xml)：我的独立博客，上面有历年原创/翻译的技术文章，以及从 2009 年以来的一些随笔。
- [Github](https://github.com/chinesehuazhou/python-weekly)：你可以获取本周刊的 Markdown 源文件，做任何想做的事！
- [邮件](https://pythoncat.substack.com)：在 Substack 上开通的频道，满足你通过邮件阅读时事通讯的诉求。
- [Telegram](https://t.me/pythontrendingweekly)：除了发布周刊的通知外，我将它视为一个“副刊”，补充发布更加丰富的资讯。
- [Twitter](https://twitter.com/chinesehuazhou)：我的关注列表里有大量 Python 相关的开发者与组织的账号。

