---
title: 'Python 潮流周刊#30：非洲 Python 社区给 PSF 的一封公开信'
pubDate: 2023-12-09
author: '豌豆花下猫'
---

你好，我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容，大部分为英文。本周刊开源，欢迎[投稿](https://github.com/chinesehuazhou/python-weekly)。另有[电报频道](https://t.me/pythontrendingweekly)作为副刊，补充发布更加丰富的资讯。

## 🐱播客推荐

2023 年即将过去，给大家推荐一下我个人年度最喜爱的播客节目《[纵横四海](https://www.xiaoyuzhoufm.com/podcast/62694abdb221dd5908417d1e)》！！它主要分享读书，探讨个人成长/职业成长，探索如何处理感情问题等。每期都在 90 分钟以上，好几期还超过了 4 个小时，但是听了完全不会觉着冗长！

## 🦄文章&教程

1、[Python 非洲：致 Python 软件基金会的一封公开信](https://pythonafrica.blogspot.com/2023/12/an-open-letter-to-python-software_5.html)

非洲十多个国家的 Python 社区组织者们联名给 PSF 的一封公开信。信件的起因是 PSF 给非洲首届 DjangoCon 的 9000 美元拨款延迟了，由此引出 PSF 内部存在的其它问题：人种歧视、对边缘群体缺乏关注、不遵守当地法律等。（题外话：PSF 在 2022 年给亚洲的拨款占比 1%，远低于给非洲的 16%……）

2、[Django 5.0 发布了！](https://docs.djangoproject.com/en/5.0/releases/5.0)

Django 5.0 在本周发布了，只支持 Python 3.10 及以上版本。主要新功能：新增`Field.db_default` 参数，可设置由数据库计算的默认值；`GeneratedField` 可以创建由数据库生成的列；引入了字段组和字段组模板，简化了表单字段相关元素的呈现。（附：一则介绍[Django 新特性的视频](https://www.youtube.com/watch?v=lPl5Q5gv9G8) ）

![定义数据库字段的默认值](https://img.pythoncat.top/2023-12-08_django.png)

3、[56 行代码用 Python 实现一个 Flex/Lex](https://www.skywind.me/blog/archives/2761)

Lex/Flex 可用于生成词法分析器，用于处理源代码中的词法结构。作者通过改造 Python 官方文档中的一段程序，实现了一个通用的基于规则的词法分析器，可用于处理简单的词法分析需求。

4、[如何在 FastAPI 正确地使用依赖注入？](https://so1n.me/2023/12/07/how-to-use-dependency-injection-in-fastapi/)

文章指出了人们在 FastAPI 中使用依赖注入时的两种错误方式，介绍了如何在 FastAPI 中使用`python-dependency-injector` 实现依赖注入的方法。

5、[为什么不应该在 Python 中过度使用列表解析式？](https://www.kdnuggets.com/why-you-should-not-overuse-list-comprehensions-in-python)

适当使用列表解析式，可以让你的代码更简洁优雅，但是过度使用的话，将严重破坏代码的可读性。作者给出了三个例子，分别用列表解析式与常规方案实现，让读者感受到易理解的代码胜过花哨的炫技。

6、[非类型化的 Python：曾经的 Python](https://lucumr.pocoo.org/2023/12/1/the-python-that-was/)

Flask 的作者 Armin Ronacher 在最新文章中讨论了 Python 的类型话题。核心观点认为 Python 的内在哲学在于它的动态类型，这是它的优势，这与类型化是冲突的，类型化有其价值，但也会带来成本。作者怀念曾经的 Python。

7、[用 django-watson 给 Django 项目添加全文搜索](https://idiomaticprogrammers.com/post/django-watson-full-text-search-guide)

一篇非常详细的教程，使用 [django-watson](https://github.com/etianen/django-watson) 和 PostgreSQL 给 Django 项目添加全文搜索功能。这个库支持跨多个 model 进行搜索，支持按相关性排序。（star 1.2K）

8、[解析 Celery 的扇出模式](https://www.better-simple.com/django/2023/12/06/fanout-pattern-explained/)

Celery 的扇出模式（Fanout）是一种任务分发的模式，由一个任务触发多个并行执行的子任务。作者介绍了这种模式的实践运用，认为这是在任务签名中实现动态工作流的好方法。

9、[Python Asyncio 的 7 个替代库](https://superfastpython.com/asyncio-alternatives/)

Asyncio 是 Python 用作异步编程的标准库，但它不是你唯一的选择。文章介绍和对比了 7 个同类的库，有比 Asyncio 更早发布的 Tornado、Twisted 及 Gevent，也有更为年轻的 Curio、Trio、AnyIO 与 UVloop。

![异步编程库的star趋势](https://img.pythoncat.top/Asyncio-Alternatives-Star-History.png)

10、[解密 CPython：当执行 a+b 时，背后发生了什么？](https://codeconfessions.substack.com/p/cpython-dynamic-dispatch-internals)

一篇深度剖析 CPython 解释器的动态分发机制的文章。动态分发（Dynamic Dispatch）指的是在程序运行时（而不是在编译时）确定调用哪个方法或函数的过程。a+b 看似简单，但是它们可能有多种类型组合，实际的计算过程可能完全不同。

11、[如何使用 Python 播放 GIF？](https://www.blog.pythonlibrary.org/2023/12/05/viewing-an-animated-gif-with-python/)

GIF 是一种图像格式，是无声的动画视频。有什么 Python 库可以通过代码来播放 GIF 动画么？文章分别介绍了 tkinter、PySimpleGUI 和 Jupyter Notebook 这三种方式。

12、[用 Python 开发一个微型的 REPL](https://bernsteinbear.com//blog/simple-python-repl/)

REPL（Read-Eval-Print Loop）是指编程语言的交互式环境。Python 标准库中有个`code` 模块，提供了实现 REPL 的功能，文章逐步提出需求，演示了如何用它开发一个简单的 REPL。

> 🎁**Python潮流周刊**🎁已顺利更新到第 30 期啦！我在几天前写了一篇《[聊聊技术周刊的变现](https://pythoncat.top/posts/2023-12-06-future)》分享了对未来发展的思考，近期也会对所有周刊再作一次总结，敬请期待！

## 🐿️项目&资源

1、[self-operating-computer：使多模态模型能够操作计算机](https://github.com/OthersideAI/self-operating-computer)

这是近期基于 GPT-4v 的最火项目之一。让大语言模型像人类一样查看屏幕内容，操作鼠标和键盘来实现特定的目标。当前的挑战是 GPT-4v 在鼠标点击位置方面的错误率很高。（star 5.1K）

2、[marko：具有高扩展性的 markdown 解析器](https://github.com/frostming/marko)

一个专注于扩展开发体验的 Markdown 解析器，遵循 CommonMark 规范 v0.30 规范。速度不是它的优势，但能方便观察 AST、实现自己的元素和渲染器。（投稿自@frostming）

3、[WeChatMsg：导出微信聊天记录成 HTML/Word/CSV文档](https://github.com/LC044/WeChatMsg)

本周火爆朋友圈的项目，作者是一名在校大学生。支持导出微信聊天记录，支持生成年度聊天报告。Slogan 不错：“我的数据我做主”。可以导出数据用于训练个人 AI！（star 12.5K）

![年度聊天报告的一页](https://img.pythoncat.top/image-20230520235409112.png)

4、[PyWxDump：获取微信账号信息、导出聊天记录](https://github.com/xaoyaoo/PyWxDump)

这是上一个项目的依赖，可解密数据库，查看和导出聊天记录，支持微信多开场景获取多用户信息。（star 1.6K）（PS. 总感觉这两个项目会被某信针对，你觉得呢？）

5、[mlx：适用于 Apple 芯片的阵列框架](https://github.com/ml-explore/mlx)

Apple 推出的基于自家芯片的机器学习阵列框架，拥有跟 Numpy 相近的 Python API。（star 7.2K）

6、[DSAlgo：数据结构和算法的面试题集锦](https://github.com/SamirPaulb/DSAlgo)

一个精选仓库，收录了大量数据结构和算法题，使用 Python 解答。另外它还收录了不少大公司的面试题与计算机类学习笔记等资料。（star 1.7K）

7、[Python 在线编译器网站](https://pythononlinecompiler.com/)

一个网页在线版本的 Python 解释器，支持 Python 2.7、3.3-3.10 版本，预装了大部分的常用库，包括 Turtle、Tkinter、Pygame、Numpy、Matplotlib、Pandas、Scipy，等等。

![在线画个小闹钟](https://img.pythoncat.top/2023-12-09_compiler.png)

8、[aio-libs：65 个基于 Asyncio 的库/项目](https://github.com/aio-libs)

它收录了 Python 社区中与异步 IO 相关的库，包括 aiohttp、aiopg、aiomysql、yarl、aiokafka 等等。

9、[kolo：查看 Django 应用的执行过程](https://github.com/kolofordjango/kolo)

一款 VSCode 插件，具有帧可视化、漂亮的火焰图、显示执行了 SQL 查询的代码行、支持直接跳转到异常位置等。

![kolo功能介绍图](https://img.pythoncat.top/2023-12-09-kolo.png)

10、[dnsteal：DNS 渗透工具，通过 DNS 请求隐秘发送文件](https://github.com/m57/dnsteal)

一个只有 200 多行代码的小工具，伪造 DNS 服务器，隐秘截取请求中的文件。支持多文件、支持 Gzip 压缩、支持自定义子域信息等。（star 1.6K）

11、[github-trends：使用自定义卡片美化 GitHub 个人主页](https://github.com/avgupta456/github-trends)

可生成你在 Github 的贡献日历、代码行数分析、多种维度下的个人贡献统计图等，轻松将动态图标嵌入到你的个人资料页面中。（star 6.4K）

12、[Depix：还原打了马赛克的截图信息](https://github.com/spipm/Depix)

在截图上打了马赛克就安全了么？不！这个库能以较高的准确度还原图片中的纯文本信息。仓库中有技术原理解释，以及对使用缺陷的说明。（star 24.7K）

![恢复文本信息的示例](https://img.pythoncat.top/Recovering_prototype_latest.png)

## 🐼欢迎订阅

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