我订阅了很多的周刊/Newsletter,但是发现它们都有一个共同的毛病:就是缺乏对往期内容的整理,它们很少会对内容数据作统计分析,更没有将内容整理成合集的习惯。
在自己开始连载周刊后,我就想别开生面,除了每周更新正刊外,还计划定期做一些盘点。我认为过往周刊值得被串联起来,形成合集后,既方便大家阅读检索,在这个 AI 时代,还能作为知识库的资料,能挖掘出更多有价值的信息。
Python 潮流周刊每 30 期作为一季,预计有 60,000 字以上。在第 1 季完结时,我整理成了合集,并制作成 PDF 版本的电子书,还写了一篇总结分享
现在,第 2 季已完结,我准备延续这个做法,继续做一些总结分享。
首先,分享一些数据吧。第 2 季从 2023.12.16 到 2024.07.16 正好 210 天,跟第 1 季的时长一样,精华部分总字数约 6 万,与第一季相差不大。
本季周刊共分享了:
  • 文章/教程:354 篇
  • 项目/资源:347 个
  • 播客/视频:28 则(有不少是视频列表)
  • 热门讨论:2 个
  • 赠书:93 本
第2季合集内容也整理发布到了网盘里,链接如下:
Python潮流周刊第2季(第31-60期),含EPUB、PDF、Markdown版本
提取码:1024
Python潮流周刊第2季(第31-60期),含EPUB、PDF、Markdown版本

31 继 iOS 后,新 PEP 提议官方添加 Android 为支持平台

博客原文 | 发布时间:2023-12-16

🦄文章&教程

周刊第 24 期分享过 PEP-730 CPython 提供对 iOS 的官方支持 ,这个 PEP-738 则是将目标转到了 Android 系统。目前两个 PEP 都是草案状态,但 Android 使用的是 Linux 内核,也许这个 PEP 被采纳的可能性会更大些吧?(附:今年 Python 语言峰会上的 Python on Mobile: State of the Union
第 29 期分享的 PDF 转 Markdown 工具 Marker 短短两周时间已经逼近 5K star了。这篇文章解读了它的工作原理,介绍了它的 6 个阶段及所依赖到的工具(PyMuPDF、OCRMyPDF、Tesseract 等等)。
Marker的工作原理
Python 3.10 引入了 match-case 模式匹配语法,你们在项目中用过了么?这篇文章介绍了一种使用场景,是处理 Github 机器人返回的复杂 JSON 数据,相比传统的写法,它使得代码变得简单了。
Discord 的官方博客文章,分享了他们将某个测试从 20 秒提升到 2 秒的故事!做法是使用“pytest 守护进程”和热加载,确保在需要测试时马上有进程可用,省去了即时准备工作的耗时。文章还提到了一个实现同样功能的开源项目 pytest-hot-reloading
开发一个在手机上 SDXL text-to-image 的 Demo,这听起来就不是一件简单的事情,但这篇文章介绍说只用 88 行 Python 代码就能实现?!用的技术是 BeewareLeptonAI,前者在我们周刊中出现过多次(例如上文中的两个 PEP 都与它有很深的联系),后者是知名 AI 专家 @贾扬清 的创业项目。
作者指出了一些常见的 Python 多余/错误用法,包括# -*- coding: utf-8 -*-range(len(xx)) 、追踪循环的位置、用 index() 判断是否包含、单独的 getter 和 setter。其中第一个关于编码的确实很常见,它也让我想起另一个经常被无意识使用的if __name__ == '__main__' 。(附:为什么我不推荐写所谓的 main 函数?
if TYPE_CHECKING 的作用是为了实现条件式导入模块,基本示例如下:
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from collections.abc import Sequence

def func(value: Sequence[int]) -> None:
    pass
在什么情况下要这样用呢?文章介绍了这种模式的必要性,简单结论:在 mypy 强制执行的类型检查和运行时的类型检查之间作出权衡,特别是在有大量循环依赖的情况下。
它们都是关系型数据库的对象关系映射(ORM)框架,作者基于从 Django ORM 切换到 SQLAlchemy 的视角,介绍了两者的一些差异和正确用法,避免在使用时犯错。
__init__.py 是 Python 中特有的一个文件,为什么会需要用到这样的文件呢?它的作用是什么?如何自定义这个文件,又有哪些使用技巧和最佳实践呢?推荐阅读这篇很详细的教程。
一篇系统分析 Mojo 的文章,作者想研究的问题是:Mojo 是什么,未来会如何发展?Mojo 对通用科学计算(即不仅是 AI)有用么?它什么时候才真正可用,目前还缺少什么?作者不认可流传的“Mojo==Python++ ”说法,而是把它视为一门新颖的静态语言来研究。
不要在代码中直接用数字表示 HTTP 请求的状态码,这属于“魔术数字”,并不规范。Django、Starlette 和 Litestar 等框架都提供有枚举值,但更推荐的是使用标准库的http.HTTPStatus ,另外从 Python 3.12 开始,还可以用HTTPStatus.is_success 表示 2xx 状态码。(附:本文出自作者日更的“降临节日历”系列文章,多是些编程小技巧,去博客阅读
PEP-505 None 感知运算符 是一份被推迟的提案,它的用途是简化判空时的条件处理。文章介绍了 PEP 里的三种 None 感知运算符,并做了一个简单版实现。文末还提及了不支持这份提案的两个评论,我想附和一句:还是不要加了,继续 Deferred 吧!
Code is read more than written”是编程的基本常识之一,提醒着程序员要关注代码的可读性和可维护性。作者将它提炼为“maintainer > author”,但是,编码只是达成目标的手段,它为用户提供服务,因此是“user > dev”,而且最终目的是为业务创造价值,因此初步推出“biz > user > ops > dev”。这个结论对么?作者逐一考虑/权衡各项因素的重要性,又列出了多组关系,最终简明的结论是:user > ops > dev,biz > ops > dev,biz ≹ user。
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇 6.2 万字的长文,方便你随时查看和下载。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

由新加坡国立大学和字节跳动联合推出,利用一张人像和动作图生成人物的运动视频。(star 7.8K)
让你在 PHP 中使用 Python 的函数和类库,或者在 Python 中使用 PHP 的包。实现原理是在进程内同时创建了 ZendVMCPython VM,直接在进程堆栈空间内使用 C 函数互相调用。目前不支持 Python 多线程和异步 IO 特性。
基于 OpenAI 的 Whisper Large v3 的音频转录工具,转录 150 分钟的音频仅需 98 秒。(star 4.2K)(附:另一个 faster-whisper:使用 CTranslate2 作更快的 Whisper 转录 ,star 6.2K)
非常有创意的项目。在前端项目中引入它的组件,用自然语言描述你想实现的效果,它就会辅助生成实现代码。
演示视频中的用法截图
Pydantic 推出的 Web 界面开发框架,可使用 React 构建响应式 Web 应用程序,而无需编写一行 JavaScript。(star 2.7K)
Mistral AI 7B 的表现极为亮眼,在评分上接近了 Llama 70B 版本。这个项目是官方开源,用于快速部署和使用这个模型。(star 5.4K)
用于测试网络条件是否符合预期,支持验证 DNS 和 HTTP 连接,可配置断言条件,支持自定义验证内容。
由 Meta 的应用强化学习团队开源,采用模块化设计,为生产环境提供了一系列独特的功能,包括动态行为空间、离线学习、智能神经探索、安全决策制定、历史总结和数据增强。(star 1.4K)
Pearl的设计图
一个 PyTorch 的展示项目,用不到 1000 行 Python 代码,实现简单高效的文本生成。(star 4.1K)
一个资源收集型仓库,包含数据分析、数据科学、机器学习、生成式 AI 等专题的大量视频列表。(star 4.2K)
中国大模型列表大全,全面收集有明确来源的大模型情况,包括机构、来源信息和分类等,目前列表中有 189 个国内大模型。(star 2.6K)
支持对 JSON、MessagePack、YAML 和 TOML 等格式的序列化与校验,拥有超高性能。(star 1.5K)
msgspec、pydantic、cattrs、mashumaro的性能对比

🐢播客&视频

“Hidden Figures of Python”播客的目标是展示 Python 社区中少数群体的声音。第一期节目是四名女性主播介绍播客的起源和对 Top Python 播客中女性嘉宾稀少的现象分析。
这期播客的嘉宾是上文 msgspec 的作者 Jim Crist-Harif。
DjangoCon US 是一个专注于 Django Web 框架的年度性大会,今年的视频已发布。
DjangoCon US的视频列表

32 打造个人的新闻聚合阅读器

博客原文 | 发布时间:2023-12-23

🦄文章&教程

在 CPU 密集型任务中,通常要根据 CPU 核心数来设置线程/进程池的大小。但如何确定实际用多少个 CPU 最合适呢?物理 CPU 和逻辑 CPU 是什么?如何测试设置多少 CPU 数比较合适?
Python 新手经常会遇到包相关的问题,主要原因之一是不清楚 Python 是如何找包的。文章介绍了 Python 查找包的顺序、它是如何安装包的、虚拟环境的作用、脚本运行方式对搜索路径的影响等。
Victor Stinner 是很活跃的核心开发者,他在 Python 3.13 alpha 1 中删除了 300 多个私有 C API 函数,收到了一些负面反馈,在 alpha 2 版本中又恢复了 50 个函数。文章记录他所做的事情,以及社区中大家的反馈。
如何给 list 这种可变对象创建副本?对于一维列表,文章介绍了三种方法;但是对于二维列表,就涉及浅拷贝与深拷贝问题,需要使用 copy.deepcopy() 。(附注:作者的“Python Gotcha ”系列短文,介绍了 Python 的一些使用注意事项。)
Asyncio 任务有手工取消和自动取消,文章介绍了 6 项最佳实践,给出了相应的示例。
我们通常将可变或敏感的参数放到配置文件中,可以使用哪些方式呢?有 ini、json、toml、yaml 等文件,也有环境变量等方式。在什么时候做配置的初始化呢?测试时如何修改配置呢?文章分享了一些使用技巧。
文章介绍了一些配置 Web 服务器的最佳实践(涉及 Gunicorn、Uvicorn 和 Hypercorn)。针对 ASGI 和 WSGI 两类标准接口的差异,如何设置 worker 数和线程数,如何使用 Locust 等工具来作测试,不同 Web 开发框架该用什么方案?
Python 不支持三元运算符,但它有一个很特殊的条件选择语法 ,为什么会这样设计呢?文章梳理了 Python 波折的语法设计故事,同时介绍了 Go 和 Rust 不谋而合的做法,让人思考什么才是编程语言中更好的语法设计?
你也许在 sorted() 和 list.sort() 函数中看到过“key”参数,除此之外,还有很多函数带有这个参数,比如 max() 和 min(),文章介绍了相关函数中对这个参数的用法
Python 中可以使用@dataclass 装饰器来定义数据类,它会自动添加 __init____repr____eq__ 等魔术方法,减少代码量。作者建议定义不可变的数据类,不用将它像普通类一样作变更属性的操作,如果在普通类中要用__repr__ 等方法,建议是手写实现。

🐿️项目&资源

想不想拥有个人定制化的内容阅读器?它支持解析 RSS 源、拉取 Mastodon 消息、阅读标记、本地文章阅读和预览、支持发送到 Kindle。(附:作者为什么以及如何开发这个项目 Reclaiming the Web with a Personal Reader
feedi的界面效果
Google 推出的生成式 AI 开发工具,可快速基于 Gemini 和 PaLM 大模型开发 AI 应用。支持文本生成、多轮对话、嵌入等。
一本基于 abook 编写的开源电子书,涵盖了从 Python 环境安装到项目开发的方方面面。通过大量案例对比 JavaScript 和 Python 语言的异同,帮助 JavaScript 工程师快速掌握 Python 语言。(投稿自@luckrnx09
可自动检测和利用 SQL 注入缺陷而入侵数据库。具有强大的检测引擎、数据库指纹识别、从数据库查询数据、访问底层文件系统、在操作系统上执行命令等。(star 29.4K)
基于 Requests 模块实现的数据采集工具,功能非常齐全!支持命令行模式、Web UI 模式和接口调用模式。(star 1.5K)(附:第 25 期分享过作者的小红书采集工具 XHS_Downloader
这是一个靠演示效果把我惊艳到的项目!直接看下方的演示图吧:
视觉理解清明上河图中的内容
使用 Django 快速搭建个人博客和播客网站,Wagtail 作为 CMS 可方便管理文章和播客节目。支持播放播客和视频,支持评论和垃圾邮件过滤,可自定义网站主题。
Hexo 博客后台管理,自定义图床上传图片、在线页面管理、开放 API、一键更新、快速接入友情链接。(star 1.2K)
星星数超多的资源收集类项目,分不同编程语言和技术领域,收集了很多实战项目类的教程。(star 142K)
它的目标是提供一个平台来研究将任意输入转换为音频。已支持 TTS 文本转语音、SVC 歌声转换、TTA 文本到音频,支持广泛使用的神经声码器。(star 2.2K)

🐢播客&视频

今年 PyConChina 活动的一部分视频已发布了,可在 B 站上观看。
PyConChina 2023 的视频列表
PyCoder’s Weekly 是我长期在看的周刊,这期播客聊了它的一些总结性话题,比如点击量前 5 的链接、今年一些重要的新闻、今年的重要主题和趋势、有意思的项目,等等。
视频比较了使用 requests、httpx 和 aiohttp 的情况,讨论了异步请求的使用等话题。

33 FastAPI 很好,Flask 也没死,它们都有未来

博客原文 | 发布时间:2023-12-30

🦄文章&教程

一篇标题十分吸睛引战的文章。说实话因见过太多“xxx 已死”、“再见了 xxx”这种煽动情绪的标题,我已经习惯绕道不读。比较框架优缺点,这非常合理,但刻意往贬低一方的角度引,就显狭隘了。(附:一篇回应文 Flask 已死,FastAPI 永生、对回应文的回应文 理性参与讨论《Flask 已死,FastAPI 永生》
如何用 Python 搭建属于自己的 RSS 信息流网站?文章介绍了一个完整的 Flask 项目,支持对接 RSS、解析文章、自动更新,最后部署上线并使用 Nginx 作反向代理。
作者介绍了自己开源的一个语法类似于 Flask 的 Web 框架,完全支持 asyncio 异步,支持 Websocket、SSE、CORS、Jinja 和 uTemplate 模板等功能。非常小(核心框架代码 700 多行),可以跟 MicroPython 一起使用。
在近 20 年前的早期智能手机上运行当下最火的大语言模型,这事感觉蛮有趣!作者使用大小为 4GB 的Llama-2–7B-Chat-GPTQ 模型,最先尝试用 Streamlit 创建应用,但发现它的浏览器不支持,最后用 Flask 开发一个简单的网页,实现与 LLM 的交互!
诺基亚9500手机上的大语言模型
Asyncio 出现晚,不像goDartjs一样隐式的运行事件循环,又使用了asyncawait的语法,所以很容易用错。文章介绍了三个坑,以及正确的避坑方法。
原文很短,推荐阅读。文章是三段“冒险故事”,主旨是让我们看到 Bash、Lua、Python 和 Rust 在实现常规 for 循环及推导式和迭代器写法时的相似性与差异性。(附:作者的另一篇 数据兔子洞:爱丽丝从 Pandas 到 DuckDB 仙境的冒险
YAMLScript 是一种函数式编程语言,其语法使用 YAML 编码。它提供了 Python 的yamlscript 库,可与PyYAML 一样操作 YAML 文件,支持最新的 YAML 1.2 规范,还可使用 YAMLScript 函数来生成或操作数据。
Python 有不少命令行标记,文章主要介绍了“-m”标记的用法。我非常认可原文标题中用“Coolest”形容这个标记。早在 2019 年,我写过一篇更为详尽的文章《Python 中 -m 的典型用法、原理解析与发展演变》,若你没读过,我诚心推荐!
持续集成(简称 CI)是将开发者的代码合并到主存储库中的过程,它涉及的环节不少:提交前测试、代码格式化、静态分析、解决冲突等。很多任务需要用自动化方式,文章详细介绍了 CI 入门、CI 平台选择、CI 任务实践、CI 任务扩展等话题。
一篇很详细的 Type Hints 教程,大部分内容是对《流畅的 Python 第二版》与官方文档的总结,后续基于 Python 3.12 重新编排并新增了一些内容。(投稿自@JayYoung2021
Pyinstaller 可以将 Python 脚本转换为 Windows 可执行文件。为什么实际没问题的代码,却可能被检测为病毒呢?如何避免被防病毒软件误伤呢?文章介绍的解决方案有:避免单文件模式、自行构建 Pyinstaller 的引导加载程序、使用代码签名证书、使用 Nuitka/Inno Setup 等替代工具。
“字体子集”指的是一个字体文件的部分,它有助于优化性能,减少下载时间。作者介绍了自己开源的用于生成字体子集的 Python 库fontimize ,可以减少字体文件约 95% 的大小。
周刊第 27 期分享过 Python 3.13 正在开发一个 JIT 编译器的消息,现在 @brandtbucher 已经提交了 PR 啦(恰在圣诞节前)!commit 信息像是一首诗,蛮有意思。
Python 中用zip 将两个列表合并,就像一个拉链, Unix 中的paste 命令可执行相同操作,它的比喻是粘贴:将一列放到另一列旁边。paste 可追溯到 1978 年,zip 则追溯到 1988 年,但现在这两个词通常被视作其它含义:paste 总是用于“复制和粘贴”,zip 是压缩文件格式。
作者做了一个看似很无聊的尝试,成功将 40 亿个 if 语句写入到 40GB 文件中,可以快速判断任意 32 位数字是偶数还是奇数。这当然是没有现实用处的,但阅读文章你会了解做成这件事并不简单:如何高效写出这么多 if 语句?如何控制文件大小避免编译错误?如何加载和执行才能提升性能?
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

一个基于 Python 的 UI 框架,可以创建按钮、对话框、Markdown、3D 场景、绘图等前端标准元素,内置定时器定时刷新数据,支持 Tailwind CSS 自动补全,支持在 Jupyter Notebook 运行。(star 6.2K)
一套用于转换和处理 CSV 的命令行工具,一行命令实现一种常见功能,包括 Excel 转 CSV、JSON 转 CSV、CSV 转 JSON、打印列名、查找匹配单元格的行、生成统计信息、使用 SQL 方式查询表数据、导入和查询数据库数据。(star 5.7K)
# 从 PostgreSQL 中提取数据到 CSV 文件
sql2csv --db postgresql:///database --query "select * from data" > new.csv
基于 Flutter/LVGL 开发,支持多种操作系统,支持深色/浅色主题,支持响应式。采用编译时代码生成技术,性能卓越;原生支持 MVVM, 数据驱动 UI。
evue拖拽生成计算器
开发个人语音助手,将你的语音转成文本给 GPT-3 以生成响应,使用 ElevenLabs 将大模型的响应转为语音,使用 Pygame 播放,使用 Taipy 呈现在网页上。
你敢相信么,只需加上这个库的一行装饰器代码,就能将 CLI 程序转换成用户友好的 GUI 程序?这个项目已存在多年,star 数很多。(star 20K)
Mojo 还没有官方的包管理工具,因此作者用 Python 开发了一个。主要借鉴 Rust cargo 和 Python poetry ,规划提供的能力是:mod = cargo + rustup + poetry + pyenv。
建立在 Pinecone 矢量数据库之上的 RAG 框架,只需简单的命令即可与文档数据聊天。包含文本数据分块与嵌入、聊天记录管理、查询优化、上下文检索(包括提示工程)和增强生成等功能。
canopy的流程示意图
手机端社交约会 APP 项目,这是后端程序。使用 Django 框架,使用 Gdal、Geos 和 Postgis 进行地理定位。支持推荐匹配、聊天、群聊等功能。
支持抖音、Tiktok、快手、虎牙、斗鱼、B站、小红书等平台直播录制,抓取多平台直播源地址,抖音无水印解析,快手无水印解析。基于 FFmpeg 实现,支持自定义配置录制以及直播状态推送。
使用创新的方案,为当前基于扩散的图像生成技术引入了显著的性能增强。(star 6.4K)
实时生成海浪演示
一个无依赖的 SQL 解析器、转译器、优化器和引擎。可用于格式化 SQL 或在 20 种不同的方言之间进行翻译,例如 DuckDB、Presto / Trino、Spark / Databricks、Snowflake 和 BigQuery。(star 4.4K)
将包含数学公式的图像或 pdf 转换为 Markdown 和 LaTeX 格式,可以在 CPU、GPU 或 MPS 上运行。与同类的 Pix2texnougat 项目不同,它支持更多样化的 Web 场景。
一个基于 Calibre 的个人图书管理系统,支持在线阅读。后端采用 Tornado 框架,前端采用 Vue.js 和 Readium.js。界面美观,支持多用户、在线阅读、批量导入、邮件推送、书籍信息自动更新、私人模式等功能。(star 2K)
talebook界面

🐢播客&视频

这是 UP 主@今天晚放学 基于我的文章制作的视频,算得上是一份 2024 年元旦贺礼了!相信很多读者已经看过文章版(毕竟上期周刊我还心血来潮分享过),但我还是推荐你再看看这则视频版。另外,作者的“编程美学”系列视频,做的真不错。

34 Python 3.13 的 JIT 方案又新又好!

博客原文 | 发布时间:2024-01-06

🦄文章&教程

Python 3.13 将引入一个 copy-and-patch JIT 编译器,它尽可能地利用了 LLVM 生态的东西,编译器用 clang,编译参数开 -o3 获取最大的性能,二进制工具用 llvm-objdump 和 llvm-readelf,方案可谓是又新又好。
如何用 Python 读取 Excel 文件?文章从速度、类型、正确性三个维度,分别用 Pandas、Tablib、Openpyxl、LibreOffice、DuckDB 和 Calamine 读取 Excel,得出了性能上的排名。
Python库读取Excel性能对比
Flask 是强大且灵活的 Web 框架,这篇入门教程介绍了如何设置 Flask 项目、开发入门级项目、使用蓝图添加多页面、使用 Jinja 模板、存储静态文件等内容。
余弦相似度是机器学习和信息检索中广泛使用的指标,文章以它为例,介绍了一些底层优化方法,从纯 Python 版本开始,Numpy 导致性能变慢、Scipy 提升 2-5x、C 语言提升 200x、SIMD 内部函数提升 400x、结合 AVX-512 与 BMI2 后 747x、增加 AVX-512FP16 后升至 1260x、使用 AVX-512VNNI 提升 2521x。
Stable Diffusion XLMidjourney v6 等最新的 AI 模型可以生成极其逼真的图像,人眼已经越来越难以分辨真假。作者训练了一个能够检测 AI 生成图像的分类器,可获得 99% 准确率的结果。
作者敏锐地发现 sum、all、any 和 math.prod 几个函数在入参为空列表时,都有恰当的默认值,然而 maxmin 函数却会报错!作者认为它应该等于负无穷大,你们怎么看?
Appium 是常用的 Android UI 自动化测试工具,文章出自一个 Appium 自动化测试系列教程。
如何给 Django 应用添加异步的实时事件?不使用 Redis,使用 Django 最新的异步特性。文章演示开发了一个极简的 Web 端即时通讯应用。
Python 有哪些常用的数值数据类型?它们有哪些特点,CPython 内部是如何实现的?文章介绍了整数、浮点数和复数类型,以及 math、decimal 和 fractions 三个模块。(附:PEP-3141—数字的类型层级
如何在 asyncio 程序中实现非阻塞记录日志?文章介绍了如何用共享的 QueueQueueHandler 来记录日志,并使用 QueueListener 来存储日志。
Instagram 在 2010-2011 年从 0 到 1400 万用户,那时仅仅有 3 名工程师!他们用了什么技术栈,有什么成功经验可给我们借鉴的?文章介绍了它使用到的相关技术和实现方案。
Instagram早期架构解析图
Google 设计出 Starlark 旨在取代 Python 作为构建描述语言,语法非常相似。这份文档说明了它的一些设计原则,以及跟 Python 语言的诸多差异,比如它的布尔值不是整数、字符串不可迭代、没有“is”运算符、for/if 语句不允许在函数外部使用,等等。
文章出自正在连载的免费在线电子书《数据工程设计模式》(Data Engineering Design Patterns)。数据工程经历了 SQL、维度建模、商业智能和大数据、MapReduce 和 Hadoop、云革命等阶段。

🐿️项目&资源

简单快速实现对文件的监听,使用 Rust 的Notify 库处理底层文件系统通知,支持同步和异步监听处理。(star 1.4K)
from watchfiles import watch

for changes in watch('./path/to/dir'):
    print(changes)
hy 是 Python 的一种替代语法,与 Python 相比,它提供了各种额外的功能、泛化和语法简化。与其它 Lisp 相比,它提供了对 Python 内置和第三方库的直接访问。(star 4.7K)
使用 Rust 开发的工具,可构建运行时自启动的 Python 应用程序,为每个平台构建独立的二进制包。
提供了 URL 类,可便利解析和修改 URL,支持通过属性方式访问 url 的每个部分。(star 1K)
自动生成 API 接口规范文档,支持 OpenAPI 规范(即 Swagger 规范),与框架无关,内置对marshmallow 的支持。(star 1.1K)
简单的对象序列化库,与 ORM/ODM/框架无关,可用于验证输入数据、序列化与反序列化,提供有丰富的字段类型,支持多种数据格式。(star 6.8K)
单链接网站(one-link website)适合用作个人主页,这个网站模板使用 Github Pages 部署,让你轻松省力地构建美观的个人主页。
简化文档类的处理操作,支持身份验证和授权、列表权限控制、文档的增删改查、文档预览、版本控制等。
国人作品。利用 ChatGPT 根据你的简历和某招聘网站的职位描述,自动匹配和生成求职信息,自动发送给招聘人员。求职寒冬季,祝你好运!
简化的 Hacker News 阅读客户端,没有登录、投票、发布等功能,支持查看用户和评论信息。
命令行中的Hacker News阅读器
实现了对 Mixtral-8x7B 模型的高效推理,需要大约 16 GB 的 VRAM 和 11 GB 的 RAM。(star 1.4K)
文件的数据被覆盖或删除了,还能找回么?这是一个 Linux 上的文件&数据恢复工具,支持文本搜索,支持交互式操作。(star 1.1K)
在移动设备上运行的多模态视觉语言模型 (MMVLM),有 1.4B 和 2.7B 参数规模,在高通骁龙 888 CPU 和 NVIDIA Jeston Orin GPU 上分别获得每秒 21.5 个 token 和 65.3 个 token 的优秀性能。
MobileVLM的架构图

🐢播客&视频

独立开发者怎么做技术选型?为什么图拉鼎会用 Python 作为自己项目的后端语言?(附:两年前的另一期播客 ByteTalk 3. 跟图拉鼎聊聊独立开发者的那些事
以面向 Python 开发者的视角来对比和学习 Rust 编程,介绍了主要特性的差异(比如 Python 的类和 Rust 的 struct)。

35 Python JIT 编译器和 Numpy2 即将推出

博客原文 | 发布时间:2024-01-13

🦄文章&教程

JIT(Just in Time)是什么?它的工作原理是怎样的?Python + JIT 能带来什么好处?copy-and-patch JIT 是 2021 年提出的设计,专为动态语言运行时而设计的高速算法。Python 3.13 有望实现它!上期周刊的第一则分享是关于它,本期我们继续哈~
NumPy 2 是一个重要的大版本,预计于 2024 年 3-4 月发布。它是一个不向后兼容版本,为了确保我们的应用不被破坏,有必要提前做些准备。文章介绍了新版本的不兼容修改、如何确保在合适的时机再安装新版本、如何轻松升级你的代码。
文章提出了一个疑问:在关注性能的科学计算领域,以前很流行 Fortran,为什么现在越来越多使用性能较慢的 Python?原因也许是人们高估了执行速度的重要性,编程的敏捷性和项目的可维护性更重要,而且替代方案的性能也不差。(附:Fortran 社区的讨论
Pandas 支持用 mergejoin 函数实现等价连接,但是不等价连接怎么办呢?文章介绍了两种比常规笛卡尔连接更好的方案:使用pyjanitor 库的 conditional_join 函数,既节省内存又不损性能;使用DuckDB 的 SQL 查询 DataFrame,性能极高。
Pandas profiling 是一个很流行的库(已改名ydata-profiling),仅需一行代码就能生成数据集的分析报告。这篇教程介绍了它的工作原理、如何导入和生成报告、分析和处理敏感数据、分析大数据、它的替代库及它的缺点等内容。
Python 装饰器是我最爱的特性之一。在我们自定义装饰器时,需要考虑元数据的丢失问题,functools.wraps 很关键。文章介绍了它的用处、如何使用它,以及如何传递自定义参数。
作者分享了如何用纯 Python 实现 Game of Life(用pysdl2 作图形输出),以 180fps 的 4K 分辨率运行,比传统的实现加速了 ~3800 倍。
想要提升 Flask 项目的安全性,免受安全漏洞侵害,有哪些最佳的技术实践?文章基于 OWASP Top 10 最常见漏洞,介绍了yaml.safe_load 加载 JSON、defusedxml 解析 XML、flask_wtf 保护表单、 secure_filename 处理文件路径、防 XSS 和 CSRF 的一些方法、构建安全 API 的 9 个建议,等等内容。涉及 Flask-SSLify、Flask-RESTful、Flask-HTTPAuth、Flask-JWT-Extended 和 Flask-Limiter 等库。
服务器发送事件 SSE 是 Web 服务器向网页发送实时信息的一种方式,无需页面重复请求。文章用完整的例子介绍了如何用 Python 实现它,最后也指出了它的两点局限性。
在人工智能时代,TODO 应用会是什么样子的?作者用 Django + 简单的 HTML + Whisper + mixtral-8x7b-instruct + SQLite 实现了一个 TODO 项目,值得借鉴学习!
这个 PEP 提议引入一个语法糖 f(x=) ,作为命名参数和值的变量名相同时f(x=x) 的简写。它与 f-string 的 f'{x=}' 相似,在 Ruby、JavaScript 和 Rust 中能找到类似的简写。据统计,这种模式占关键字参数用法的 10-20%。
这篇教程介绍了如何用Tkinterrembg 实现移除图像的背景,效果挺不错。
移除图像中的背景

🐿️项目&资源

与 Pandas 的df.describe() 函数一样,ydata-profiling 非常好用,只要一行代码,提供了对 DataFrame 的扩展分析,支持以 html 和 json 等格式输出分析报告。(star 11.7K)
这是用纯 Python 实现的轻量级库,用于检查和修改 PDF 文件,支持 CLI 和 API 用法。
在命令行终端里可视化操作 SQL。(star 1.6K)
harlequin操作数据库
用统一的方式调用 LLM,支持 Bedrock、Azure、OpenAI、Cohere、Anthropic、Ollama、Sagemaker、HuggingFace、Replicate 等 100+ LLMs。(star 4.4K)
对文档(如 PDF、HTML、WORD等)和图像等非结构化数据作预处理,提供分区、清洗、暂存、提取、分块和嵌入等方法。(star 4.2K)
可选择 GPT3.5/GPT4.0/Claude/文心一言/讯飞星火/通义千问/Gemini/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。(star 19.9K)
对语音识别模型 Whisper 的增强,拥有更准确的时间戳、多说话人检测,并通过增强语音活动检测来减少幻觉,速度更快,占用内存更少。(star 7.4K)
一个编程练习网站,提供了 42 道 Python 小项目练习题,有解答思路分析和参考答案。
一个食谱管理项目,具有 RestAPI 后端和用 Vue 开发的反应式前端。支持 PC、平板和移动端,可使用 url 轻松添加食谱,支持用户管理和群组管理。(star 4.3K)
大语言模型没有按预期回应,有什么办法?这个库可以指定输出结构和类型,可验证和更正大模型的输出,提升内容质量。(star 2.7K)
快速构建类型 ChatGPT 的 Web 应用,集成了 Langchain、Autogen、OpenAI Assistant、Llama、Haystack,可自定义前端实现全部功能,包括监控和观测、身份校验机制、多用户、各种工具无缝集成等。(star 4.3K)
可在大型数据集上进行生产就绪的全局预测和时间序列特征提取,支持时间序列预处理、交叉验证拆分器和预测指标(MASE、SMAPE 等)。

🥂讨论&问题

Python 为什么需要用虚拟环境?为什么 Python 会用这种包管理机制?包管理软件需要解决什么样的问题?
在不能调用 API 的情况下,如何让 Java 项目调用 Python 项目?JNI-CPython-Python 方案有什么问题?打包成 EXE 和 so 实现如何?

36 Python 打包生态依然不乐观

博客原文 | 发布时间:2024-01-20

🦄文章&教程

作者一年前吐槽了 Python 打包的悲惨状况,一年后再看,有什么改善么?还是变得更糟糕了呢?文章讨论了社区里主流的打包工具、PEP 标准及其落实情况,尽管有不少新东西,但看起来还是很黯淡。
文章整理了去年 PyCon US 和 Python AU 的 243 个视频,按照 Youtube 播放数排序。都不算多,而且第一名和第二名的差距非常之大。
PyCon 2023 视频播放量
Java 中用synchronized 关键字可以保证变量是线程安全的,Python 中有什么东西可以达到相同效果么?文章介绍了threading 模块的 Lock + 上下文管理器 + 装饰器的实现方案。
PyPy 是一个 Python 解释器,它的 C API 兼容层存在一些性能问题,作者正在研究使 PyPy 的 C API 变快方法,文章介绍了他们所做的工作。
作者在用 Python 和 Kotlin 开发时,都接触了协程,因此写了几篇文章来比较它们的用法、分析它们的细节和工作原理,涉及文件读写、HTTP 请求、序列和生成器,可以加深你对协程的理解。
Pydantic 在处理 Unix 时间戳时会猜测是以秒还是毫秒为单位,但这遇到 1970 年的时间就有问题啦!众所周知,计算机世界的时间戳从 1970-1-1 开始(UNIX 纪元),这意味着早期的时间戳位数少,若当成秒级换算的话,谬之几十年!
如何在浏览器上实时执行代码片段?作者基于 WASI,开源了一个工具,可以在浏览器上执行 Python、PHP、Ruby、Lua、Javascript 和 SQLite 代码片段。
多线程环境中使用 SQLite,可能会出现“database is locked”错误,文章分析了两大原因(SQLite 等待锁超时、在事务读取后写入),介绍了对应的解决方案,特别提及 Django 本身提供的解决方案。
Polars 是基于 Rust + Arrow 实现的高性能 Python 数据处理库,这篇教程全方位介绍了 Polars 的相关知识。(附:另一篇同样主题的文章 Polars 实用教程
如何在 Python 中实现类似 React 的组件?作者准备用纯 Python 函数生成 HTML,使用lxml 库来渲染,文章介绍了一些基本的尝试,验证可行性。
用 SQL 能否实现一个大语言模型呢?ChatGPT 说这超出了 SQL 的能力。但是,作者不这样认为!文章详细介绍了实现 GPT 所需的相关知识,最终用 500 行 SQL 实现了出来!(附:作者从 2010 年以来每年用 SQL 实现一件不可思议的事,比如 用 SQL 求解魔方用 SQL 实现量子计算机模拟器 ……)

🐿️项目&资源

requests 库的直接替代,具有 HTTP/3、HTTP/2、多路复用连接、系统 CA、证书吊销、HTTPS/TLS/QUIC 或 UDP 上的 DNS、异步、DNSSEC,消除了 requests 的很多缺点。
Python 的 __slot__ 变量可以减少实例内存,防止添加动态属性。但要正常工作,所有基类都要实现它。这个库可以检查它是否损坏、重叠、冗余,提供了 pre-commit 钩子。
支持拖拽小部件、绘图、表格和其它可查看的 Python 对象组合到自定义分析工具和仪表板中,支持大量可视化工具,支持 ipywidgets 。(star 3.7K)
一边编辑,一边查看实时效果
支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。一键安装部署,支持跨语种问答,支持选择多知识库问答。(star 1.9K)
TTS 同步产生脸部表情数据、声音到表情、生成身体动画。
通过 Hook Web 页面中的 Canvas 函数,获取文本及样式等信息,转换成 Markdown 格式,最终转换成 Epub、PDF 和 Mobi 格式。
这个项目收录了 400 多道 LeetCode 题目和不同语言的答案。
一个 PC 端的语音输入、字幕转录工具,完全离线、无限时长、低延迟、高准确率、中英混输、自动阿拉伯数字、自动调整中英间隔。支持热词功能、日记功能、转录功能等。
一个多语言文档 OCR 工具包,支持准确的行级文本检测。缺点是不适用于图片和手写文本。(star 3.6K)
强大的短镜头语音转换和文本转语音 WebUI,Zero-shot TTS、Few-shot TTS、跨语言支持、W ebUI 工具。(star 2.7K)
一个 Windows 上的 RAG 演示项目,基于 LLaMa 2 13B 模型、TensorRT-LLM 和 FAISS 向量搜索库。
以结构化、模板化的方式编写高质量 ChatGPT prompt,克服普通 Prompt 创建时缺乏系统性、缺乏灵活性等缺点。(star 2.8K)

37 Python “令人失望”的动态类型超能力

博客原文 | 发布时间:2024-01-27

🦄文章&教程

这是作者装饰器系列文章的第三篇,从很多开源库的现实用法中提取出了三个通用型用法:拦截调用、作函数注册、丰富函数行为。
假如这是一家超级大公司的面试题,不使用堆和二叉搜索树,如何实现标题的算法?文章通过最小合理方案,一步步提出问题再优化代码,并比较各种方案的时间复杂度,可以学到很多东西。
Python 创建字典的两种写法 dict() 与 {} 有什么区别?文章通过它们的字节码和 CPython 解释器源码进行了深度分析。单纯看性能,结论是:{} 要比 dict() 快。(附:Python 为什么系列曾写过 Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?
Taipy 团队开发了增强型 Markdown API,通过添加标签在内容中生成图形界面元素。
图形界面的效果演示
介绍了 Python 中 7 个可以优化内存的技巧:在类定义中使用__slots__、使用生成器、使用mmap 作大文件处理、减少使用全局变量、利用逻辑运算符的短路求值、选择合适的数据类型、使用字符串驻留技术。
Python 垃圾回收是如何实现的?CPython 为什么使用引用计数?分代垃圾回收器可以解决什么问题?如何查看和调试引用周期?
PostgresDynamoDB 两种数据库分别是如何使用的?应该如何选择?文章比较了它们的 ORM、查询、性能、备份、迁移等方面,并根据不同场景给出了方案选型的建议。
一篇详细的官方博客教程,使用 Pandas 作数据整理,用 Altair/Plotly 作数据可视化,用 Streamlit 作前端。
Scrapscript 是一种小型、纯粹、函数型、内容可寻址、网络优先的编程语言,作者介绍了它的设计原则、特性、已实现和开发中的功能,以及使用 Python 实现的过程。
X.509 是一种 PKI 标准,用于定义数字证书的格式和标准化证书的属性。Cryptography 的 42.0.0 版本提供了 X.509 相关 API,文章介绍了它的重要意义、解决的相关问题。
作者感到失望的原因不是动态类型相比静态类型有什么缺点,而是认为 Python 没有充分利用动态类型的优势。动态不是静态的对立面,动态是可在运行时变更类型。作者希望增强动态分析的能力,希望动态类型的“test amplification”更容易,而不是转向类型注释或静态类型。
这篇文章是对上一则分享的回应,通过 Werkzeug、Pony、Django、fluent-compile、Pytest 等库使用到的神奇技术(猴子补丁和动态元编程),说明 Python 动态类型的超能力。Python 能做的事或许超出你想象。
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

一个基于任意大语言模型构建自定义 AI 的框架,使用 Docker 部署。API 优先,支持插件扩展,带管理面板,记忆对话和文档。(star 1.6K)
AI框架的对话界面
支持将任意类型文件隐藏在一张图像中,不影响图像的视觉效果。支持图像解码、图像比较、CLI、UI、跨平台、加密与压缩等功能。
支持高精度的实数和复数浮点数运算,提供了大量特殊的用于数学运算的函数。
为 SQLite 数据库操作提供线程安全的接口,基于队列的语句执行。
用 Rust 实现的单一 HTTP 实现,避免常见的 Gunicorn + uvicorn + http-tools 依赖组合。支持 ASGI/3、RSGI 和 WSGI 接口应用,支持 HTTP/1 和 HTTP/2 协议。(star 1.5K)
FastAPI + HTMX 的组合,主要特点:装饰器语法、支持任意模板引擎和服务器端渲染库、内置 Jinja2、同时支持 HTMX 请求和普通请求、支持同步和异步路由……
一本适合 LLM/VLM 训练工程师和操作员的技术手册,可帮助成功训练大型语言模型和多模态模型。(star 6.9K)
通过同时设计前端语言和运行时系统,使交互 LLMs 更快、更可控。支持多个链式生成调用、高级提示技术、控制流、多模态、并行和外部交互,具有 RadixAttention 的高性能运行时。
将 ChatGPT 部署成自己的 Telegram 机器人,支持 GPT-4、GPT-4 Turbo 和 DALLE 2,支持群聊,内置 15 种特殊对话模式,支持查看 OpenAI API 花费等功能。 (star 4.5K)
它的中文名是“茴香豆”,提出一套解答技术问题的算法 pipeline,部署成本低,支持群聊这类复杂场景,支持微信群、lark 群组、飞书群、钉钉机器人等 IM。
使用 ID Base 模型、InsightFace 模型、ID ControlNet 模型、Ipadapter_instantid 等模型,官方提供 8 种风格。
美美的安妮海瑟薇
支持 lora、支持多批次、支持通用的 styler,官方提供 10 种风格。

38 Django + Next.js 构建全栈项目

博客原文 | 发布时间:2024-02-03

🦄文章&教程

Django 和 Nextjs 是后端和前端开发中非常强大 Web 框架,这篇教程用 Django 4.2 和 Next.js 13 开发了一个餐厅菜单管理项目。
比上一则分享更为全面的全栈项目教程,除了实现 CURD 操作,还涉及仪表板、表单筛选、Tailwind CSS、不同数据库的使用,以及分别使用 Node.js 和 Django 构建后端等内容。
Numba 是提升 Python 代码性能的常见方案。作者开源了一个 Profila 库,专用于分析 Numba 代码本身的性能问题,文章介绍了它的使用方法,以及关于性能分析的三点局限性。
作者分析了datetime 模块的 10 个陷阱,同时介绍了主流的三方库的情况(例如 arrowpendulumDateTypeheliclockter),发现它们大多存在同样的问题。什么样才是更好的日期时间库?作者开源了一个库,试图解决文中的问题。
这里的“语法”指的是写作语法,不是编程语法。文章介绍了language-tool-pythonGramformerGingerpyaspeller 4 个库用于检查和自动纠正语法错误。
这是作者在 2023 PyCon Sweden 演讲的文字版,分享了他的调试思维、调试工具和技术,工具例如snooppdb/ipdbPuDBweb-pdbbirdseyeKolo 等等。
调试很难,跨多语言调试更难。文章介绍了如何调试多语言问题,使用 GDB 来调试 Python+C 语言,定位和解决死锁问题,分享了一些调试的经验。
Guido 在 2008 年写了 Sorting a million 32-bit integers in 2MB of RAM using Python ,这篇文章是对它作的分析解读。解决方案中用到了不太常见的模块:structarrayheapq ,也用了上下文管理器和生成器等技术。
如何用 Python 开发一个解析器?这篇教程用Pylasu 定义 AST,使用ANTLR 生成解析器,实现从 ANTLR 解析树到 Pylasu AST 的转换,最后构建出带 CLI 的玩具编程语言解析器。
动态规划什么编程技术?相比其它方案,它的特点和优势是什么?文章从常见编程问题出发,使用缓存、优化缓存、动态规划逐步深入,揭开动态规划的神秘面纱。
Python 支持用类型提示,但这并不是强制的。事实上,有很多情况下并不建议使用类型提示。typing 模块的这篇文档列举了一些不推荐使用类型提示的原因。
在个人笔记本电脑上如何运行大语言模型?这篇教程介绍了在不同操作系统上运行llama.cpp 的完整过程,例如选择和下载模型、提示词设置、使用 GBNF 语法格式化 LLM 输出、流式响应、多模态模型等。

🐿️项目&资源

才发布一周就已近 3K star 的火爆项目!CPU.xlsx 文件提供了 16 位 CPU、16 个通用寄存器、128KB RAM 和 128x128 显示区域。使用 Python 进行编译。(star 3K)
前文提及过的日期时间库,克服了标准库和其它三方库没有很好解决的一些问题。
它由一系列代码语言模型组成,每个模型都用 2T token 训练,提供多种型号尺寸,拥有高级代码补全能力,在各项基准测试中表现亮眼。(star 4.3K)
与其它模型的基准测试评分对比
特性有:完全异步、SQLAlchemy 2.0、强大的 CRUD、动态构建复杂查询、高级 SQL 联结、基于偏移或光标的分页、模块化可扩展、自动生成接口。
让你轻松用 Python 代码构建 AI 服务,主要特性:良好的抽象、仅需几行代码即可启动模型、内置常见模型(如 Llama、SDXL、Whisper 等)的示例、自动批处理、后台任务等。(star 1.9K)
让 AI 根据你的个人品味和兴趣来策划选题、撰写、设计和编辑内容,由 6 个专业 agent 组成,支持搜索网络最新内容,聚合知名的新闻源。
纯 Python 开发的轻量型消息推送库,支持通过大多数服务发送通知,例如 Telegram、Discord、Slack、Amazon SNS、Gotify 等等等,支持短信、邮件、系统桌面等多种形式。(star 9.7K)
一个基于 PostgreSQL 的分布式任务处理库,提供 Django 集成,易于与 ASGI 框架一起使用。支持异步、周期任务、重试、任意任务锁等功能。
它可以同时运行多个 netperf/iperf/ping 实例并聚合结果,通过交互式 GUI 和可扩展的绘图功能展示数据,支持本地和远程主机,支持采集 CPU 使用率、WiFi、qdisc 和 TCP 套接字统计信息等。
urllib3 发布了 2.2.0 版本,支持在Pyodide 运行时中使用!后者是用在浏览器中的 Python 解释器,也是PyScriptJupyterlite 框架的技术基础。这对 Python 的前端开发有重大作用,未来可期。
Gnuplot 是一个强大的开源绘图工具,用于生成各种类型的二维和三维图表。这个项目将它与 Numpy 结合,充分利用数据处理和绘图能力。
RAG(检索增强生成)+向量数据库搭建一个中国历史知识问答应用,支持“Milvus方案“(本地)和“Zilliz Cloud Pipelines方案”(云上),提供基于gradio的 Web UI 界面。默认使用 GPT4 模型,可轻松切换其它 LLM。

39 Rust 开发的性能超快的打包工具

博客原文 | 发布时间:2024-02-24

🦄文章&教程

Ruff 所属团队用 Rust 开发的一个利器:Python 的包解析与安装器uv !它被设计为 pippip-tools 的直接替代品,不使用缓存时比它们快 8-10 倍。也可通过 uv venv 用作虚拟环境管理器,比 python -m venv 快 80 倍,比virtualenv 快 7 倍。(附:一篇中文翻译
解析和安装Trio库的性能对比
Rye 是 Flask 作者在去年 4 月发布的 Python 打包和项目管理工具,作者在文章中总结了它已实现的功能(下载 Python、管理虚拟环境、构建和发布包、linting 和格式化、依赖管理等) ,介绍了自己的设计想法。(附1:作者的 16 分钟教程视频 Rye: a Hassle-Free Python Experience)(附2:上一则分享的 uv 团队已接管了 Rye,将来会融合成一个。Rye Grows With UV
Rust 正在逐步取代 C 语言成为 Python 的高性能后端支撑。文章介绍了 Rust 相比 C 的优势所在,介绍了用 Rust 开发的一些知名的 Python 库。
这篇文章略微标题党了,但是文章介绍的内容很完整:基于 RSS 的异步爬虫、倒排索引、搜索排名、基于 FastAPI 的 Web 网页。可以学习搜索引擎的工作原理,学习从数据获取、数据解析、开放接口、到网页呈现的项目开发流程。
你知道执行 Python 的 print("Hello") 大约需要多少个 CPU 指令么?答案是 17000。导入 seaborn 则需要大约 20 亿个。作者开发了 Cirron 库以计算 CPU 指令数、分支未命中数及代码的时间损耗等指标。
有多个装饰器要加在不同的函数上,而且相同的装饰器可能有不同传参,如何复用这些装饰器?问题初看可能不好理解,文章中有直观示例和解决过程,可以加深你对装饰器的理解和掌握高阶运用。
如何理解 Asyncio 中的 Task 对象?Asyncio 协程的工作原理是什么?如何等待一个任务,又如何等待多个或一组任务?文章介绍了 Asyncio 的工作原理以及任务处理相关的函数用法。
文章介绍了 textwrap 库的几个主要功能,例如 shorten() 裁剪字符串长度、wrap() 将字符串等宽分割、dedent() 处理字符串缩进等。
Python 的一些新特性是在什么版本引入的?作者为了方便,梳理了一些重要语法和标准库的变更记录,同时也指出了每个版本终止维护的时间(例如 Python 3.8 将在今年 10 月 EOL)。(附:这个网站可以查看 Python 及很多项目的 EOL 时间)
直接将数据库作为队列使用,性能会不会很受影响?作者测试的结果是影响很小。具体该如何实现将 Postgres 作为队列使用?如何处理锁和事务、任务重试、处理任务超时等问题?
Django 框架适用于构建复杂的 Web 项目,作者介绍了自己常用的 20 软件包,在 Django 自身的核心功能之外,提供了更丰富的功能。
Python 中的元类是什么?为什么要学习元类?这个高级特性并不常用,但值得学习了解。文章介绍了元类的工作原理,并用现实例子演示它的强大用途。
一个编程挑战项目:有 100,000 个文件,每个文件 1000 万行,计算每个气象站的最低、平均和最高温度。数据存储在 S3 上,总大小 2.5 TB。作者给出了自己的实现(运行 8.5 分钟),以及优化成本的方案。
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

用 Rust 开发的速度极快的 Python 包安装器和解析器。Ruff 团队作品。可直接替换 pippip-toolsvirtualenv 常用命令。(star 6.6K)
基于 Flask 开发的 Web 端 SQLite 管理工具,可视化管理数据库、数据表、数据项和索引等,支持 JSON 和 CSV 格式文件的导入导出。(star 2.6K)
实时获取 Celery 的任务状态、工作线程、活动任务数等监控指标,遵循 Prometheus 导出器最佳实践,并利用 Celery-mixin 提供了 Grafana 仪表板及 Prometheus 告警功能。
一个强力的工具和 pre-commit 钩子,可以自动删除冗余写法、用新语法重写过时的代码、用更优雅的写法重构代码,等等。项目文档中给出了很多例子,推荐阅读。(star 3.2K)
# 两个重写成字典推导式的示例
-dict((a, b) for a, b in y)
+{a: b for a, b in y}
-dict([(a, b) for a, b in y])
+{a: b for a, b in y}
支持 Python 3.8+,简单快速集成 Llama 2、Code Llama、mistral、gemma 等大语言模型,可自定义客户端,还可创建异步客户端。
一个命令行工具,可将网页转换为格式精美的 pdf。支持批量转换、自定义样式、附加 CSS、复杂布局、页码、目录和分页符等功能。
NaturalSQL-7B 是拥有超高准确性的文本生成 SQL 大模型,在 SQL-Eval 基准测试中领先 GPT-3.5-turbo 和 claude-2,也领先于同数据规模的 sqlcoder-7b。
Rawdog(具有确定性输出生成的递归增强)是 RAG(检索增强生成)的一种新颖替代方案,可以自己运行脚本并获取输出作为上下文,然后再次调用自己。演示视频的例子很惊艳。(star 1.6K)
微软新推出的 AI 代理框架,可无缝跨多应用操作,完成用户的复杂任务。使用 GPT-Vision 的多模态功能来理解应用 UI,使用 Windows UI 自动化控件交互。(star 1.9K)
基于不同素材自动编写并发送邮件
在命令行终端快速查看日志文件,支持实时尾随、语法高亮、快捷搜索、自动检测时间戳合并日志等功能,支持 JSONL 文件,可自动打开 .bz 和 .bz2 文件。(star 2K)
在可穿戴设备上搭载 AI,倾听和观察你生活中发生的一切。支持 ESP 平台、Sony Spresense 或 Apple Watch 等硬件,支持本地和在线模型,多模态采集,说话人验证等。
一个用 Python 快速开发响应式 UI 应用的框架,具有内置组件、简洁的即时模式语法和少量的工具样板。支持 Shoelace 组件,支持 Markdown,集成 Chart.js 图表,支持读写浏览器缓存,支持表单验证等。
这个项目旨在使每个人能将 AI 用于解决日常问题。它的方法是将问题拆解成很多独立组件,使用结构化的清晰提示让 AI 完成任务。(star 5.6K)

🐢播客&视频

Meta 官方的一期播客节目,讨论了开发团队对最新 Python 版本的贡献,包括允许自定义 JIT(如 Cinder)的新钩子、永生对象、对类型系统的改进、更快的推导式等等。Meta 对 Python 社区的贡献确实很足哦~(附:谷歌、微软、Meta?谁才是 Python 最大的金主?
FastUI 是一个 Web 界面开发框架,可使用 React 构建响应式 Web 应用,而无需编写任何 JavaScript 或接触 npm。这期播客的嘉宾是该框架的作者。

40 白宫建议使用 Python 等内存安全的语言

博客原文 | 发布时间:2024-03-02

🦄文章&教程

最近,白宫发布了一份报告,建议使用内存安全的编程语言。去年 CISA、NSA 等机构联合发布的报告列出了内存安全的语言有 C#、Go、Java、Python、Rust 及 Swift。PSF 这篇文章介绍了 Python 在内存安全性方面所做的工作,包括封装底层代码、从 C 向 Rust 迁移、使用编译器选项强化 C 代码构建。
CSI表中对Python的简短描述
文章作者是 Requests 的核心维护者之一,他列举了这个库做得糟糕的多个地方,也指出了很多想改进却没有做到的原因。文末的结语说:“the project feels dead”。这让人感觉很难受。本周刊第26期 分享过该库作者 KR 的道歉文,然而社区内几无波澜,后来看到 KR 失业,从推文感觉他精神状态很糟糕,更让人难受了。(投稿by@frostming90)
上期周刊分享的可替换pipuv 库,你用了么?感觉如何啊?文章作者给出了积极反馈,分享了自己一些配置文件的前后对比。
Python 生成器的作用是能节省内存,这篇文章用很明白的例子对比了两种内存使用情况,让我们感受到生成器的好处,同时,文章也指出了需要避免的一些使用陷阱。
文章讨论了从 Web 抓取内容的一些高级技术,话题包括如何更好处理 Cookie 及自定义请求头、什么是 TLS 指纹以及如何避免它、需要注意的常见 HTTP 请求头、在发出 HTTP 请求时如何集成指数回退重试,等等。
两种 Web 开发框架的组合:DRF + Vue 以及 Django + HTMX,它们分别是如何使用的,各自又有哪些优势和劣势呢?文章用这两个组合分别实现同样的功能,分析了两组技术栈的差异,罗列了一份比对清单,可方便我们更好地作技术选型。
文章出自pandas 库兼《Python数据分析》一书的作者 Wes McKinney,回顾了他从 2008 年以来在数据科学领域所做的事情和转变,同时分析和思考了模块化、互操作性和可组合性的未来趋势。
作者分别调整 SQLite 的一些主要配置项来作基准测试,另外也比较了 SQLite 和 PostgreSQL 的性能。简短结论:启用 WAL 模式、使用 IMMEDIATE 事务、synchronous=NORMAL 和内存映射 I/O 对吞吐量的影响很小。
文章介绍了 Python 最新正在开发中的 JIT 是如何实现的,并尝试安装了开发版本,然后与无 JIT 版本作性能比较。目前 JIT 版本的性能反而慢于普通版本,官方仍需继续努力优化。
一篇详细的爬虫教程,介绍了如何使用 BeautifulSoup、Scrapy 和 Selenium 等库实现网页抓取,如何克服复杂网页、限速、反爬、动态 javascript 等挑战。
Wave 是一家仅有 70 名工程师但估值 17 亿美元的公司,其产品只是一款标准的 CRUD 程序,是构建在 Postgres 之上的 Python 单体架构。文章解释了为什么要选择这样的架构,解释了这样选型的合理性,以及为了保持它而克服的相关难题和选用的技术方案。
一篇非常深度的长文,深入探讨了“并发”,解释了单线程服务器如何通过异步 IO 和事件驱动编程来处理数以百万计的任务。讨论了实现并发的各种方法和工具,不同编程语言的实现。文中有不少动画,可方便读者理解。
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

这是一个 CLI 工具,使用简单的命令即可实现跨数据库的内容复制。支持增量加载:appendmergedelete+insert 模式。(star 1.3K)
一个用于管理操作系统 PATH 环境变量的命令行工具,典型功能包括:筛选目录、识别和清理无效配置、PATH 转储为 JSON、创建新的环境变量、统计数量。
全栈的 Web 开发框架,主要特点:全栈的类型提示、友好的服务通信及数据绑定、服务器端渲染、对网页作静态分析的增强校验、等等。
使用一个统一的 API 访问大模型,特点:统一的 API、支持多模态、支持 10+ 大模型平台、异步&流式和并发、自带电池、轻量化、高质量代码。(投稿by@wangyuxinwhy)
“由于低效的字符串操作,世界每年至少浪费 1 亿美元”。这个项目可替换编程语言原生的字符串类型,提高性能。可加速精确和模糊字符串匹配、编辑距离计算、排序、延迟计算范围以避免内存分配,甚至随机字符串生成器。(star 1.4K)
采用全自研内核,对比 Selenium 有以下优点:无 webdriver 特征、跨 iframe 查找元素、把 iframe 看作普通元素、可同时操作多个标签页、可直接读取浏览器缓存来保存图片、可对整个网页截图,等等。(star 4.1K)
用 Rust 开发的用于大规模数据处理的分布式查询引擎,熟悉的交互式 API、专注于查询优化、集成数据目录、丰富的多模态类型系统、专为云而构建。(star 1.4K)
谷歌最新开源作品,使用 AI 来检测文件类型,具有 99% 的精确度。可作为 Python 命令行和 API 使用,支持超过 100 中文件类型,每个文件的推理时间约为 5 毫秒。(star 7K)
magika与其它工具的得分对比图
自带电池的全栈 Web 框架,低代码,服务器端使用 Python 和 MariaDB,特点:元数据优先、管理员界面、开箱即用的角色和权限、支持插件、支持任务调度、邮箱管理、多租户,等等。(star 6.3K)
解压即用,离线运行,无需网络;自带高效率的离线OCR引擎,内置多种语言识别库;支持命令行、HTTP接口等多种调用方式;截图OCR / 批量OCR / PDF识别 / 二维码。(star 19.4K)
这个项目是 Python 3.6+ 的超集,带有 shell 原语。可以作为 shell 和 Python 单独使用,也可以在 Python 里写 shell,在 shell 里写 Python。(star 7.8K)

41 写代码很简单,但写好代码很难

博客原文 | 发布时间:2024-03-09

🦄文章&教程

作者在一系列文章(4 篇)中使用 Python 实现 RSA 加密算法,介绍了这个算法的基本步骤和数学原理,使用 Python 实现并逐步优化,以及实现对它的安全攻击,最后探索 RSA 加密的未来方向。
一个问题很少被回答,要么是因为很少有人知道答案,要么是因为它涉及一个晦涩的微妙的点。文章里列出了很多问题和解读,因写于 20 年前,有些问题已经在后来的 Python 版本中解决了,还有些问题至今仍未过时(依旧冷门)。
toxnox 是两个类似的 Python 工具,主要用途之一是测试你的项目在不同 Python 版本中的运行情况。作者解释了为什么在某些情况下,他更喜欢用 nox 的原因。(附:我在 4 年前写过一篇 tox 教程 ,也翻译过 nox 的文档。时间过得真快…)
Trie(前缀树或字典树)是一种树形数据结构,常用于存储和检索字符串集合中的信息。文章介绍了这种数据结构,使用pygtrie 库演示基本操作。
Python 处理 CSV 文件有哪些可选方案?不同方案的执行速度、代码可读性、硬件的影响是怎样的?作者测试了 Pandas 使用不同引擎时的性能、使用 Numpy/DuckDB/DataFusion/Polars 等方案的实现比较。
如何给 Django 项目添加多语言支持?通过什么方式检测当前语言?如何翻译消息文件、翻译模板文件和翻译 JS 文件?翻译后的内容是如何响应给前端的?
Lyft 将 150+ 团队 1500+ 代码仓从 Python 2 升级到 Python 3.10,总结出一份版本升级手册。
Django 项目如何集成当下火热的 Tailwind CSS?这篇教程给出了实现指导,文中附有视频。
文章列出了几个挺常见的 Python “陷阱”,新手们确实容易被绊倒。包括:不显眼的字符串连接、函数返回的 None、不可见的元组、可怕的is 、列表相乘。
一篇关于 Python 在现实世界发挥作用的文章:作者用 Python 读取 CPU 和液冷器温度,控制风扇和泵速,通过 Grafana 监控性能,有效提高了 PC 冷却效率、减少了风扇噪声!
文章介绍了在 Android 手机上简单运行 AI 大模型的方法,来体验英文语言模型(Llama2 7B、Mistral 7B、RedPajama 3B、Google Gemma 2B、Microsoft PHI 2B);中文语言模型(面壁 MiniCPM、多模态模型);Stable Diffusion。
《Python 工匠》作者@piglei 分享的自己关于编程的感触。去年已读过,现在读依然有收获。文章整理了 8 条编程经验,最核心的观点之一是“写好代码”,呼应了“Python工匠”系列文章的初心:像工匠打造完美的手工艺品一样编写优雅而高效的代码。

🐿️项目&资源

很多个人网站(包括我的)不再使用 Google Analytics 作网站流量分析,而是使用开源的 umami。这个项目基于 httpxpydantic 开发了客户端,实现登录与验证,可将自定义数据添加到 umami,可查看 umami 上的分析数据等。
它将函数式编程带入 Python 领域,提供很多原语来编写声明式业务逻辑,完全类型化,支持函数和协程且与框架无关。(star 3.2K)
这个项目收录了一系列的 Python 编程学习资料,涉及 Python 编程的方方面面,系统学习 Python。
通过在后端使用与前端 React 组件属性相对应的 Pydantic 模型来构建用户界面,快速开发具有交互性和美观的用户界面。
一个用于 Android 开发与测试的 docker 镜像,有不同设备的模拟器、支持 vnc 可查看容器内部、支持日志通过 Web UI 共享、能使用 adb 从外部控制、支持多种测试框架如 Appnium 和 Espresso 等。(star 7K)
上周的 Claude 3 是热门话题,性能跑分全面超越 GPT-4!这个项目是官方发布的 Python 开发包,支持异步、流式响应、流媒体助手、查看使用量、以 Pydantic 模型返回、重试和超时处理等。
在几秒钟内快速定制,无需额外的 LoRA 培训;确保令人印象深刻的 ID 保真度、提供多样性、高质量生成;可作为适配器与其他基础模型以及 LoRA 模块进行协作。(star 7.8K)
用于 youtube-dl 的 Web GUI(使用 yt-dlp 分支),支持播放列表。可从 YouTube 和其他数十个网站下载视频。(star 3.1K)
提供了各种内存中的集合和装饰器,包括 Python 标准库的 @lru_cache 函数装饰器的变体。(star 2K)
一个网络性能诊断工具,允许用户从终端或命令行环境中测量到特定服务器的下载和上传速度,以及网络延迟。支持跨平台,容易集成到脚本中作自动化测试。(star 13.2K)
Sora 是 OpenAI 推出的文本到视频模型,代表了视频生成技术的一个重大飞跃。该项目希望通过开源社区的力量复现 Sora,目前搭建了基础架构,但未能进行完整训练。(star 5.2K)
同样试图复现 Sora,目标是 GPU 友好、提升训练和推理效率。定期举行圆桌讨论、共读论文,深入研究现有的视频生成技术。

42 小公司用 Python 开发,能做到什么程度?

博客原文 | 发布时间:2024-03-16

🦄文章&教程

这篇文章让我有种“你不了解的行业内幕”的感觉。小公司还在坚持用 Python 2.7 + Django 1.8,竟支撑每年几个亿的交易额。作者还分享了几个项目,我的感受是:也许你不需要考虑太多“xx语言更好”,就选自己熟悉的,专注于业务实现就好。
Python 字符串既允许双引号也允许单引号,甚至可以三引号。这很灵活,但是对于有强迫症的标准制定者来说,这也是引发冲突的矛盾点。这篇文章分享的故事很有意思,推荐一读!
为什么需要用上下文管理器?它能解决哪些问题?文章还介绍了上下文管理器协议、with 语法糖、使用contextlib 实现上下文管理器、四个很实用的使用案例。
dequecollections 模块下的一种双向队列数据结构,功能与list 很相似,适宜需要在两端快速添加或删除的场景。这篇教程介绍了它的基本用法与一些高级使用案例。
Python 在运行时才检查类型,而且强调的是对象的行为而非类型,因此不怎么提注重类型安全的“泛型”。但是,Python 也支持泛型,文章介绍了如何用typing 模块实现泛型函数和泛型类。
Gevent 是基于 greenlet 这个轻量级的协程实现的高性能网络库。文章介绍了 Gevent 的常见陷阱以及解决方案。
pickle 是 Python 用作序列化的标准库,但它作反序列化时存在重大的安全风险!文章介绍了它的工作原理、安全风险的根源、机器学习领域合作设计了safetensors 格式作安全替代。
这篇教程分别使用 JavaScript 和 Python 开发电子书搜索引擎,依赖Glitter (一个使用Tendermint 构建的去中心化数据库服务),使用 React 开发展示搜索结果的页面。
很多编程语言都有import 关键字,其作用也类似,但是它们背后的运行机制会有哪些区别呢?文章分析了 Java 和 Python 中 import 的异同点,可加深你对这个话题的理解。
pdm 是 Python 中极好用的依赖管理工具,是国内开发者@frostming 的作品。作者计划写一系列关于它内部实现的文章,这是第一篇,介绍了 Lockfile 是什么、Lockfile 是如何生成的?
Python 有指针么?答案取决于你如何理解“指针”。作者简短回答,却一针见血。Python 没有 C 语言经典的指针操作,但 Python 的每个变量都是一个指针,即一切都是隐含的指针。(附:有个项目 “将指针的地狱引入 Python”,跟下方的花括号版 Python 一样画蛇添足)
无 GIL 特性终于在本周合入 Python 的主分支了!分享一篇深度介绍 GIL 的长文,理解 GIL 的工作原理、帮助预测并行性瓶颈的位置,文中使用了很多线程时序分析图,便于理解。

🐿️项目&资源

无需前端经验,快速构建跨平台的、支持多用户、实时的单页应用(SPA);没有 SDK,基于 IDE或文本编辑器即可开发,前端使用 Flutter UI,后端目前支持 Python,计划支持 Go 和 C#。(star 8.7K)(投稿自@bear)
一个包括各种集成、配置和模块的 Python 项目模板,特点有:使用copier 作项目设置与模板更新、使用pdm 管理依赖及虚拟环境、使用 dev container 作容器化、使用 mypy 和 ruff 等等常用技术栈。(投稿自@huxuan_org)
构建在duktape 引擎上的 JS 解释器,用于在 Python 中执行 JS 代码。无其它外部依赖,内置了常用的转译器(TypeScript、JSX、LESS、CoffeeScript),还支持传参、运行多个脚本、全局解释器、使用require 加载模块、从 npmjs.org 安装软件包等功能。
>>> import dukpy
>>> dukpy.evaljs("var o = {'value': 5}; o['value'] += 3; o")
{'value': 8}
在线的 Python 编程网站,很方便通过游戏方式教育小孩学习编程。
取代难以管理的传统队列和发布/订阅系统,支持故障恢复,可解决并发、公平性和速率限制等问题。具有低延迟和高吞吐量,支持 FIFO、LIFO、循环队列和优先级队列等策略,可自定义重试策略,支持集成错误处理。(star 2.4K)
使用 FastAPI、React、SQLModel、PostgreSQL、Docker、GitHub Actions、自动 HTTPS 等,支持 JWT 身份验证、基于邮件的密码恢复,使用 Traefik 作反向代理/负载均衡。(star 17.5K)
我认为 Python 用空格作缩进是最最迷人的设计!奈何有人更喜欢花括号。这个项目为 Python 加上了花括号,基本示例:
def print_message(num_of_times) {
    for i in range(num_of_times) {
        print("Bython is awesome!");
    }
}

if __name__ == "__main__" {
    print_message(10);
}
一个简单的、风格类似requests 的 HTTP 客户端,构建在 Twisted 之上。
自动抓取、汇总并按指定规则分类整理影片文件,创建供 Emby、Jellyfin、Kodi 等软件使用的元数据文件。(star 1.6K)
可用简单的 HTTP 请求访问受 Cloudflare 保护的页面,是唯一为认证代理提供 SSL 支持的爬虫框架,仅一行代码即可集成任何 Chrome 插件,支持 sitemap、支持数据清理、支持缓存、提供了 Selenium 快捷方式,等等。
一个围绕 WebView 组件的轻量级跨平台包装器,在 GUI 窗口中显示 HTML 内容。可与 Web 框架一起使用,也可单独打通 Python 与 DOM。最新发布的 5.0 版本,开始支持 Andriod。(star 4.2K)
它可让你直接在白纸上练习弹钢琴!目前最多支持两个手指,主要为买不起钢琴的人提供练习。

43 在开源与家庭之间,他选择了家庭

博客原文 | 发布时间:2024-03-23

🦄文章&教程

作者开源了PyOxidizerpython-build-standalone 等多个 Python 项目,但因为编程语言兴趣已转向 Rust,以及身份成为了丈夫&父亲,时间精力不足,因此选择回归家庭,要给这些开源项目寻求新的维护者了。
家里的电脑处于休眠模式,如何从其它地方远程唤醒它?作者用树莓派单板计算机 + Python 开发的简单网页 + systemd 服务,通过给电脑的网络控制器发送数据包,实现了机器的远程唤醒。
相比静态类型语言,Python 要消耗大量内存。文章探讨了 Python 的内存模型:对象是如何分配的、对象存储在什么地方、最终如何清理对象?介绍了如何使用简单的技巧,显著改善内存的使用。
正则表达式中“$”符号会匹配到什么内容呢?Python re.MULTILINE 多行模式对字符串匹配的影响?是否不同的编程语言的表现都一样呢?什么时候应该用“\z”和“\Z”?
不同编程语言匹配字符串末尾的情况
双下方法即以双下划线开头和结尾的特殊方法,例如__init__() ,Python 语言中共有 150 多个特殊的双下方法,文章对它们多了分类介绍,并梳理了明细清单。
Python 有丰富的库可支持国际化和本地化,文章介绍如何用gettext 库实现语言国际化以及如何管理本地化资源。
Qwen 是阿里推出的大语言模型,作者用 Win10 系统搭建了一个基于 Qwen 的 AI 问答助手。内容包括安装环境、下载模型、使用transformers 实现模型对话功能。
“如果你不知道编译器是如何工作的,那你就不知道计算机是如何工作的。“作者通过用 Python 开发一个 Lisp 解释器,详细介绍了 Scheme 的语法,深入探讨解释器/计算机的工作原理。
正确地解析 URL 要比想象得难,它自 1994 年提出以来已发生巨大变化。Python 标准库urllib 并不遵循任何 URL 规范,文章介绍了两个符合 WHATWG 规范的解析库ada-pythoncan_ada ,后者比前者快 2 倍,前者比urllib.parse 快 2 倍。
鸭子类型的核心思想是“如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子”。由对象的行为决定类型,而非是一成不变。这篇长文对鸭子类型作了非常详细的介绍,它是什么、如何使用、有什么优缺点、使用哪些方案来弥补鸭子类型的缺点,等等。
介绍了 PostgreSQL 服务端与客户端通信的流程,使用 Python 实现一个最小化的服务端。
作者在去年开发了两个 Python 框架,文章分享了他在开发框架时学到的东西。部分建议有:定义你的反目标、了解已存在的东西、首先考虑你的界面、在没准备好时就使用、1 个样本是不够的、重视文档,等等。

🐿️项目&资源

本周最最火爆的项目当属马斯克差点跳票的 Grok 大语言模型了,有非常惊人的 314B 参数,8 个专家的混合体,最长上下文 8192 token。(star 43K)
基于 GPT-4 的开源情报助手,从付费的 DeHashed 高效地搜集和分析信息,对网络安全和数据泄露调查有所帮助。
一个 Python 日志库,强调结构化和类型安全的日志记录,兼容 logging 标准库,支持输出 JSON、logfmt 和漂亮的控制台日志。(star 3.1K)
Python Debug 工具,与 Linux 中调试 core dump 文件一样,支持在异常发生时/程序任意位置保留当前调用栈帧,然后通过 pdb 进行调试。支持全局 hook,支持服务器远程调试。(投稿自@cocolato)
符合 WHATWG 规范的 URL 解析器,也用在了 Node.js 等项目中。比标准库 urllib 快 4 倍。
一个验证概念的项目,可作为模板,用于构建和自定义自己的 CRM 解决方案,重点是易于集成和可扩展性。
一个 PyTorch 工具包,专为快速简便地创建先进的语音和文本处理技术而设计,可加速对话式 AI (即语音助手、聊天机器人和大语言模型)开发。(star 7.7K)
提供了非常简单和统一的 API 来处理各种格式的配置文件,支持格式有 JSON、ini、Pickle、XML、Java properties、YAML、TOML,等等。
专注于 Llama 模型在中文方面的优化和上层建设的高级技术社区,定期组织线上活动、技术研讨和经验分享,促进成员间的创新交流。(star 9K)
可将 Python 应用打包成在 Android 设备上运行的二进制文件(APK、AAB 和 AAR),支持多种 CPU 架构,支持大多数纯 Python 包和一些流行的依赖于 C 代码的包(如 numpy、sqlalchemy)。(star 8K)
基于素描快速生成图片、夜晚图片转换为白天(或相反)、晴天图片转换为雨天,等等。
使用类似于 React 的组件构建 HTML 页面,旨在与 htmx.org 一起使用,几乎不需写任何 JavaScript。后端基于 Starlette 框架。

🐢播客&视频

CPython 主线分支已合入了可禁用 GIL 的开关,这则视频带大家体验一下没有 GIL 的 Python 会有什么样的表现。
ruff 和 uv 出自同一个团队,给 Python 的基础工具链带来了非常有前景的影响。这期播客对话了 Charlie Marsh。(附:另一则相似话题的播客 uv - Python 包的下一次演变?

44 Mojo 本周开源了;AI 学会生成音乐了

博客原文 | 发布时间:2024-03-30

🦄文章&教程

讨论了编程语言在规模扩大时面临的风格多样性问题,提出了“语言风格沙皇”(Style Czar)的概念。作者提到 Scala 过于灵活、C++ 新旧标准共存、Python PEP-8 没有与时俱进,呼吁社区应该有人(例如语言创造者)引导社区发展出统一的风格标准。
介绍了“Everywhere Computer”,旨在将计算任务分布到一个广泛的开放网络上,包括个人设备、局域网中的其他设备、云节点集群等。介绍了如何使用 Rust、JavaScript 和 Python 编写具体的函数,并将它们编译为 Wasm 组件。
Reflex 是一个纯 Python 全栈 Web 框架(Github 15K star),其作者介绍了 Reflex 的架构,包括前后端的实现细节和工作原理。
Reflex的工作原理图
作者用将近一年时间定位 PyPy 中一个奇怪且难以复现的 BUG,文章介绍了他采用的各种定位方法、这个 BUG 出现的原因、以及在调试时发现的其它问题。目前修复已合入 PyPy 主分支。
如何在 Python 项目中运行 JavaScript?PyMiniRacer 是一种方法,但旧项目年久失修,作者接手了它,做了很多的更新,文章介绍了新版本的变更项以及未来的计划。
文章介绍了如何实现两种语言的相互调用,实现数据跨语言项目的传递。Python 调用 JavaScript 用了 pyjsparserPyV8,反向用了 node-python、WebSockets 和 HTTP 请求。
介绍了一种使用文件而非内存的缓存方案,类似于lru_cache ,它提供了file_cache 装饰器,主要优点是能持久化缓存结果。文章详细介绍了实现的代码。
介绍了一个可加速 Django 框架中 collectstatic 命令的执行速度的工具,包括如何安装和配置、如何将其集成到 Django 项目中以提高性能。还提供了一些性能提升的指标和最佳实践建议。
分布式协程是可以挂起、序列化并在另一个进程中恢复的函数,与分布式调度器(如 Dispatch)结合使用,可简化软件的创建过程。Python 原生支持协程,但协程本身不能被序列化,文章介绍了如何解决这个问题,以及如何处理无法序列化的文件和网络句柄、如何处理大型对象以及如何处理全局对象和代码更新等问题。
如果基于 NumPy 的代码太慢,有时可用 Numba 来加速。但由于它的类型注解和编译选项,错误使用将导致性能变慢,文章分析了相关问题,并给出了优化的建议。
Django 的 system check framework 是一种内置机制,可在运行 Django 命令时自动检查和报告潜在的配置及应用状态问题。作者通过性能分析和代码审查,发现并实现了多项优化措施,提升了示例约 50% 的运行速度。所做优化将在 Django 5.1 版本发布。
文章通过数据分析的方法(蒙特卡洛方法)模拟抛硬币、轮盘、大乐透等玩法,结果发现输的概率非常大,这告诉了我们一个道理就是……
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

Mojo 是一种新的编程语言,试图将 Python 的语法及生态与系统编程及元编程相结合,弥补研究与生产之间的差距。(star 18.5K)
目前支持生成歌曲、歌词等。自带维护 token 与保活功能,无需担心 token 过期问题。(附:另一个suno 逆向工程 API
一个命令行工具,支持在 Markdown、reStructuredText 和 LaTex 文件中用black 格式化 Python 代码块。(投稿自@Chao)
一个用于处理文件名和文件路径字符串的实用工具,支持删除无效字符、替换平台保留字、删除不可打印字符、参数校验、多字节字符、支持多平台,等等。(投稿自@Chao)
除题目所述,它还用到以下技术栈:Nginx、RabbitMQ、Redis、MySQL 和 Docker 等,支持登录、项目管理、接口管理、用例管理、流量录制、配置管理、定时任务、报告管理等功能。
一个简单、快速、轻量级的 Python 测试调试器,支持跟踪代码的执行,并允许用基于 LLM 自然语言的调试器追溯检查程序的状态。
以面向开发者的方式创建播客,不需要任何昂贵的设备。它从用户处获取输入,以此生成脚本和基于该脚本的音频文件。依赖FFMPEGllmOS
只需提供一个视频主题或关键词,就可全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。支持 OpenAImoonshotAzuregpt4freeone-api通义千问 等多种模型。(star 5.5K)
将大语言模型嵌入到操作系统中,使操作系统“有灵魂”。旨在优化资源分配,促进跨代理的上下文切换,实现代理的并发执行,为代理提供工具服务,维护代理的访问控制。
AI操作系统的架构图
提供了一个将自然语言查询转换为 Selenium 代码的引擎,使用户或其它 AI 能够轻松自动化、轻松描述 Web 工作流程并在浏览器上实现自动化。(star 3.5K)
超轻量级个人博客模板,完全基于Github PagesGithub IssuesGithub Actions。不需本地部署,从搭建到写作,只需要 18 秒,2 步搭建好博客,第 3 步就是写作。
一个开源的产品分析工具,支持自托管。旨在为企业提供一个可控制、可定制且符合数据隐私要求的分析解决方案。有免费的 cloud 版本。(star 16.5K)
最近大火的 Devin 的开源替代品,可理解高级人类指令并分解为步骤,研究相关信息,并编写代码以实现给定的目标。它利用大语言模型、规划和推理算法以及 Web 浏览能力来智能开发软件。(star 13K)

45 越来越多的 AI 自动开发框架

博客原文 | 发布时间:2024-04-06

🦄文章&教程

微软总部发布的研究论文,介绍了 AutoDev 框架,它使 AI 代理能够自主地编写代码、测试、构建和操作 Git 等,使用 Docker 确保开发环境的安全,并可通过配置来限制 AI 代理的权限和操作。在 HumanEval 数据集上取得了 91.5% 的代码生成准确率和 87.8% 的测试生成准确率。
AutoDev框架概览
FastAPI 越来越流行,但是作者还坚持用 Django,文章简短介绍了 10 个原因。
ASGI 是异步服务器网关接口规范,允许异步服务器与 Web 应用框架进行通信。文章介绍了几种流行的 ASGI 服务器(Daphne、Uvicorn、Hypercorn 及 Granian),比较了它们的性能和特性,同时给出了如何选择合适的 ASGI 服务器的建议。
JSON 有两个主要的标准定义(Ecma-404 和 RFC-8259),然而现实的各种编程语言和 JSON 库在处理数字的精度和范围时,却存在诸多差异。文章对此作了一些对比和总结。
不同语言对数字类型的表示
Python 的列表支持乘法操作,如[[]]*4 ,将得到[[],[],[],[]] ,但是,这个例子中复制出的 4 个列表只是对同一个对象的引用。文章深入解析 CPython 源码,介绍了列表对象的结构及其内部对象存储机制、星号运算符的实现原理、CPython 具体如何执行列表的乘法操作。
Celery 是 Python 中常用的分布式任务队列库,这个系列文章已更新 9 篇,深入介绍它的基础架构、Worker 启动、重要组件、生命周期、定时任务等等内容。
作者介绍了自己最新在用的技术栈:用mise 作 Python 版本和虚拟环境管理、poetryuv 作依赖管理、 ruff 作格式化和 linting,以及 pydantic 作运行时检查。
本周意义重大的一则消息:Cloudflare 支持用 Python 编写 Workers!此举将扩展 Cloudflare 平台的功能,将推动无服务器计算及在浏览器中运行 Python 代码。该功能目前为公测阶段,期待后续的发展。
文章提出两个基本问题:AI 代码生成工具对编程入门的新手有什么影响?新手如何在入门编程时使用 AI 代码生成工具?文章介绍了两篇论文的研究结果。
这篇教程介绍了如何用 OpenAI 的 Whisper 模型转录视频,并使用强大的 FFmpeg 工具轻松添加字幕。
文章介绍如何使用 GitHub Actions 的定时功能自动执行数据爬取任务,介绍了 GitHub Actions 的工作原理及几个使用限制。
文章介绍如何使用断点来调试和观察代码的执行过程,主要介绍了pdb 模块的 breakpoint() 方法的使用。
Python 支持使用lambda 表达式创建匿名函数,但只支持单个表达式。社区中总是有人提出要支持更灵活的匿名函数,今年又有了,文章介绍了提议者的观点以及相反的观点。(附:Python 之父为什么嫌弃 lambda 匿名函数?
🎁Python潮流周刊🎁每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

🐿️项目&资源

开源的 AI 软件工程师,利用了 shell、代码编辑器和 Web 浏览器等工具,充分发挥 LLMs 在软件开发中的潜力。(star 18.4K)
普林斯顿大学推出的 AI 工程师,在 SWE-bench 测试中修复了 12.29% 问题,成绩接近 Devin。(star 6.6K)
一个基于 LLM 生成前端 UI 界面的框架,并可将 HTML 转换为 React、Svelte、Web 组件等。(star 4K)
从复杂格式的非结构化数据中提取基于文档理解的深度知识,可视化的文本分块,自动化且轻松的 RAG 工作流。(star 2.4K)
中文名是“兹白”,出自山海经。相比于 gunicorn ,它的性能更好,并可在 Windows 上使用。相比于 waitress ,兹白在不使用 gevent 时单进程性能与它相当,在重载情况下比 waitress 更稳定。
可使用 GPT-4 生成关于给定主题的大约一小时的单扬声器有声读物/播客 mp3 文件。
纯 Python 实现的一个高级的二进制仿真框架,支持很多操作系统和硬件架构,支持多种文件格式,支持跨架构和平台调试,具有逆向调试功能。(star 4.8K)
用纯 Python/Jax 编写,面向 Google Cloud TPU,可实现 55% 到 60% 的模型翻牌利用率。
一个无任何依赖且支持跨平台的库,用于播放声音。支持异步模式、循环模式,主要支持.wav 格式。
基于视觉条件并行去噪的无限长度和高保真虚拟人视频生成,受 Sora 启发而开源,可配合实时高质量的唇同步模型MuseTalk ,构建完整的虚拟人生成解决方案。
建立在 LlamaIndex、Ollama 和 HF Pipelines 之上,创建 AI 代理并提供简单的 REST API 来调用。

🐢播客&视频

油管上的系列视频,介绍如何用流行的前后端技术栈克隆一个 Airbnb 网站,可作练手项目学习。
一档聚焦于 Django 框架的播客,第一期节目分享了 DjangoCon 2023 上的一些会议演讲内容,以及其它有趣的东西。

46 如何用 Python 预测日食的时间和轨迹?

博客原文 | 发布时间:2024-04-13

🦄文章&教程

本周一(04.08)上演了今年唯一一次日全食,作者由此想到如何用编程方法预测日食发生的时间。文章分享了计算的技巧,绘制了本次日全食的轨迹,同时预测了 2020-2030 年间所有的日食。
今年日全食的运动轨迹
作者全职加入 Textualize 公司,参与了流行的 Python 库 Rich 和 Textual 的开发,文章主要分享了四个方面的经验:靠网络形象获得工作机会、你的自我不应该妨碍你的工作、如何与用户及贡献者互动、如何在完全陌生的大型代码库上开发。
代码坏味道(Code Smells)本身不是错误,但是会影响代码质量和可维护性。文章介绍了5 类常见的代码坏味道,以及修复这些问题的最佳实践。
文章介绍了几种用 Python 作质因数分解的方法,从暴力解法到经典的埃拉托色尼筛法,重点介绍了后者的算法思路以及代码的优化方法。
Supervisor 是一个 C/S 架构的进程监控与管理工具,文章介绍了其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题(可克服nohup cmd & 命令的弊端)。
JIT 编译器已经合入 CPython 3.13 主分支,这个最新发起的 PEP 旨在回答关于它的一些常见问题,主要目标是明确这个 JIT 应满足什么条件才能变为非实验性的特性。
Zapier 是流行的在线自动化平台,支持数千款 APP。文章介绍了 Zapier 采用的技术架构,包括用 Django 框架作后端,用 RabbitMQ 和 Celery 来创建分布式工作流引擎,用 Kafka 作分布式事件存储和流处理,等等。
去年的一大技术新闻是扎克伯格的 Meta 推出 Threads 与马斯克的 Twitter 竞争。Theads 的技术栈与 Instagram 几乎相同,大型单体架构,Django 框架改造的后端,数据存储在 TAO,用 ZippyDB 作缓存。
Python 以其可读性和简单性而闻名,它有一些关于命名的规范,有助于保持代码一致性和清晰度。文章通过示例介绍了 Python 正确的命名风格,并给出了反例。(附:Google 内部专注于代码质量的“Code Health”系列,最新一篇分享了几条命名原则,有 Python 之禅的味道)
文章回顾了表格的历史(从古代的方格到高度结构化的数据格式),提出表格在当今面临的问题,介绍了如何通过Great Tables 库创建更美观好用的表格。
一张表格的组成部分
若将列表作为字典的键,会报错TypeError ,这是为什么呢?在这个过程中,Python 内部是如何执行的呢?文章解答了这个问题,原因跟__hash__() 魔术方法有关。
作者基于 Raspberry Pi 1b 和 DS18B20 温度探头开发了一个温度监测器,使用 Python 将温度数据传给 Influxdb,实现检测温度的变化。(根据文章开头描述,我推测作者现在应该只有11-12岁)
这篇文章建议在做面试编程时,将答案写成一行代码的形式,文中给出了一些例子如反转二叉树、计算二叉树深度、查找第一个回文等题目,使用各种花销的技巧将代码写成一行。但是,注意文章发布的日期,它只是一个愚人节玩笑,不要当真!

🐿️项目&资源

它可让 LLM 在本地运行代码(Python、Javascript、Shell 等)。安装后运行 $ interpreter ,即可以通过终端中类似 ChatGPT 的界面与 Open Interpreter 聊天。(star 47.1K)
无缝支持 Polars、pandas、modin 和 cuDF,使用 Polars API 的子集,使用 Polars 的表达式,100% 分支覆盖率。
一个自动扫描安全漏洞的命令行框架。输入顶级域名,它可发现相应的子域名和证书并进行侦察,然后对漏洞、机密、错误配置和网络钓鱼域名进行全面扫描。
用户提出一个问题,它将用多个引擎搜索,并将搜索结果组合给 LLM,根据搜索结果生成答案。不需要 GPU 或 OpenAI 或 Google API 密钥,即完全免费。使用免费的 ChatGPT3.5 / Qwen / Kimi / ZhipuAI(GLM) API,支持 ollama,支持 Docker 部署。(star 6.6K)
PyCharm 是最专业的 Python IDE,其官方博客经常发布技术文章,在 YouTube 上也经常发布视频。这篇文章汇聚了一些跟 Django 相关的文章和视频的学习资源。
前文分享了这个库的设计理念。它依照表格各部分而定义了一系列组件,支持灵活调整表格布局。使用 Pandas 或 Polars 的 DataFrame 数据作输入。
最近有一则爆炸性新闻是“XZ 的后门事件”。这个项目用 Python 实现了部分后门功能,你可以通过 SSH 客户端来探索它们。
它可以将 docx 文件的各项元素提取成 Python 对象,包括文本和图像,实现内容读取、插入、修改等功能。
一款运行在 Windows 上的,能备份导出朋友圈为 html 的工具,可下载图片/视频永久保存,支持根据联系人和朋友圈时间进行过滤导出。
组装和控制一条机械臂,需要多少成本?这个项目给出的方案成本约 250 美元,且支持增加一条机械臂,总计 430 美元。使用 Dynamixel XL430 和 Dynamixel XL330 伺服电机。(star 2K)
Draw.io 是一个免费在线的图表工具,可创建流程图、组织结构图、UML 图、ER 图、网络图等。这个库支持创建、添加对象、设置样式等功能。
浏览器中的数据库实体关系 (DBER) 编辑器,可构建图表、导出 sql 脚本、自定义编辑器等,无需创建帐户。(star 4.3K)

🐢播客&视频

这则视频使用 Django、websockets 和 HTMX 克隆出一个 ChatGPT。每个功能被分解为一次提交,视频解释了代码作用并演示了效果。
这个系列视频有 23 期,主要面向初学者入门数据科学,涵盖 Python 编程基础、数据分析、数据可视化、大数据、机器学习等话题。

47 当你的老师希望你去做开源

博客原文 | 发布时间:2024-04-20

🦄文章&教程

这篇文章提出了一个尖锐的问题:有些老师建议学生去开源项目上做事,但却没给出有效的指导,导致开源项目里出现很多无效的互动。建议想参与开源贡献的同学,不要犯这些错误:不要将练习 Git 操作的内容提交 PR 到原仓、不要破坏项目原有的 linter 和格式化规范、不要签到式打招呼……
f-string 很好用,而且很强大。文章介绍了一些经常使用的场景,例如对数字的处理(整数、浮点数、科学计数法等)、百分比、日期、填充、正负号等。
如何开发一个可以录制和转录语音的笔记应用?这篇教程使用 Django+OpenAI+AlpineJS 开发了一个简单的项目。
文章介绍了可提高 Web 项目安全性的 7 类实践,包括验证输入并清洗数据、使用安全的编码工具、使用最新 Python 及库、明智处理错误和记录日志、最小权限原则、使用 HTTPS 传输、定期作安全审计。
Fedora Linux 的一项提案,希望用 “-O3” 编译器优化标志来构建 CPython 解释器和标准库,预计整体上可提升 Python 性能 1.04 倍。提案对应的版本是 Fedora 41 和 Python 3.13。
Ruff 又发布新版本啦,新的解析器速度提升 2 倍,这意味着所有 linting 和格式化的速度提升 20-40%。文章介绍了这个手写解析器相比旧解析器,带来了诸多优点。(感叹一句,Astral 团队可太会做 build in public 了!)
RSS 是个好东西,强烈建议所有人都用!个人博客的标配是提供 RSS 源,Django 框架有Syndication 可创建 RSS 源,但默认情况难以阅读,文章介绍了如何给 RSS 源加上样式。(附:我的博客也做了 RSS 预览美化
如何快速判断一个元素是否在某个集合中?最流行的方法是布隆过滤器,但还有别的过滤器,文章介绍了最近推出的二进制熔断过滤器,速度更快,内存占用更低。介绍了pyxorfilter 库的使用,这个仓的文档中指出了两篇学术论文,感兴趣的读者可以研读一下。
Code Review(代码评审)是项目开发时的关键环节,值得关注的评审点有不少,作者分享了 3 个曾忽视的重要的小事:命名、指引性注释、以及沟通方式。文中总结的要点对提升代码可维护性和塑造团队氛围有重要作用。
作者有一个很好的出发点:各大 APP 有年度总结,我们每天用键盘,为何不给它来个工作总结?用pynput 库可监听键盘与鼠标事件,实现统计功能。文章还介绍了用tkinter 开发一个简单的查看界面。
上界版本约束(Upper Bound Version Constraints)是一种指定软件包最高可安装版本的机制。这篇万字长文主要指出了这种机制的诸多弊端、解释了语义化版本控制(SemVer)的概念及其局限性。
作者最近花了几周为自己的编程语言开发了一个代码格式化工具,文章介绍了技术实现上的一些知识点,主要是如何处理各种抽象语法树 (AST),包括文本、空格、缩进、宽度、内容渲染、注释的处理,等等。(附:作者去年写的 开发编程语言的十年

🐿️项目&资源

用 Rust 开发的高性能静态代码分析器,比 pytype 和 pyright 快 100 倍以上。可检测列表越界和字典不存在的键,支持语言服务器的各种功能如代码补全和重命名等。(star 1.9K)
Claude 官方推出的 cookbook,一系列的资源和教程。(star 2.7K)
一个使用 Kubernetes 的工作流编排器,可定义并运行容器的 YAML 工作流。提供@flow.task() 装饰器,每个 Python 函数可作为 Kubernetes pod 运行。
用于从代码仓下载文件,方便提供给聊天机器人使用。支持根据语言筛选、可排除某些目录/文件类型和测试文件、支持删除注释和文档字符串。
知识内容密集的速查表,专注于 Python 核心内容、全面而精选。
专为斗地主设计的强化学习框架。斗地主包含合作、竞争、非完全信息、庞大的状态空间和动作空间。它提出了将深度蒙特卡洛与动作编码和并行演员相结合的方法,提供了一个简单而有效的解决方案。(star 3.9K)
支持多种仪表板的无缝集成,首选的推荐是Homepage 、Homarr 和Dashy 。(star 4K)
newspaper3k 是一个拥有 13.7K star 的项目,用于从网站中提取各种元素,能识别 10 多种文字语言。但该项目已有 3 年多没更新了,newspaper4k 是它的复刻分支,添加了许多功能,修复了不少问题。
由 marian 和 Bergamot 提供支持,在本地作翻译,提供 CLI 和 GUI 使用方式。
在运行时将 print 语句直接插入到 AST 中,可打印变量赋值和其他信息。用法简单,constable.trace 装饰器在要追踪的变量发生赋值时,将 print 语句插入到函数的 AST 中。
用于处理文本数据的 Python 库,用于深入研究常见的自然语言处理任务,如词性标记、名词短语提取、情感分析、分类等。(star 8.9K)
基于微信读书生成 RSS 订阅(支持.atom.rss.json格式),自动定时更新内容,支持全文输出,支持将订阅源导出 OPML。(star 2.7K)

🐢播客&视频

菲律宾第 9 年举办 PyCon 活动,这份演讲视频列表共有 37 个视频。
2024年菲律宾PyCon演讲视频
如今的 LLM 已如雨后春笋般遍地开花,个人开发者训练 LLM 的条件越来越便利。这则视频介绍了 LLM 的相关概念,以及训练 LLM 所需的知识。作者的另一则视频会动手实践,通过示例将理论运用起来。

48 Python 3.14 的发布计划

博客原文 | 发布时间:2024-04-27

🦄文章&教程

Wasmer 是一个快速且安全的 WebAssembly 运行时,其开发团队推出了py2wasm ,让 Python 程序也可以转换为 WebAssembly,运行速度比基线解释器快 3 倍。
Ruby 和 Python 都是脚本语言中的佼佼者,它们有着诸多差异。文章通过 for 循环这个看起来很小的语法点,分析出两门语言深层的设计理念之不同。(附:这是 2021 年的旧文,本周突然火起来了。而我在 21 年恰好翻译过,欢迎阅读译文版本 通过 for 循环,比较 Python 与 Ruby 编程思想的差别
出自“Python Gotcha”系列,简短介绍了这三个字符串函数的意外行为,确实不符合直觉。Python 3.9 引入的removesuffix() 以及 removeprefix() 可以正确地删除左右字符串。
这是关于 IPC(进程间通信)的系列文章,介绍了基于 Unix 操作系统提供的不同机制,并用 Python 代码作演示,话题包括命名管道、Unix 域套接字、Unix 信号、消息队列、共享内存、内存映射文件等。
Python 3.13 的开发工作已接近尾声,下个月将冻结新功能合入,计划今年10月1日发布。Python 3.14 版本的开发将从 5 月 7 日正式开始,官方已公布 3.14 版本的发布时间表,预计最终版本在明年10月1日发布。(正好都是我们的国庆节!)
时间复杂度用于评估算法的性能效率,随着数据规模增大,时间复杂度越低的算法效率越高。文章介绍了 Python 各种数据结构的时间复杂度,例如列表、队列、字典、集合、计数器、堆/优先级队列、排序列表,等等。
这是一个系列文章,目前已更新 3 篇,计划从单个文件开始构建出一个完整的 Django 项目。新人接触 Django 开发时,只需两行命令就能启动一个完整的新项目,但这样缺乏对 Django 的理解。这个系列以逐步添加文件的方式,让你掌握必要的知识。
ThreadPoolExecutor 是 Python 的官方线程池实现方案,文章通过分析相关源码实现来理解线程池的架构设计,同时探讨由于使用不当导致的内存占用过高等相关问题。
我们整天跟浏览器插件和 IDE 插件打交道,那么,你是否想知道如何用 Python 设计一个插件系统呢?作者以自己开源的utt库为例,介绍了一个简单插件系统的实现。
Python、Go 和 Rust 的异常处理分别是怎样的?它们的实现方案各有什么优缺点呢?作者最后的结论是更喜欢 Python 直观且简单的处理方式。(附:我们周刊中曾出现过三篇关于此话题的文章:编程语言的四种错误处理方法两种风格的错误处理将 Python 错误作为值:比较 Go 和 Rust 的使用模式
用 Python 编程时,你通常无需关注内存如何分配与回收,都是自动处理的。但在涉及性能优化、与 C 语言交互、处理大量数据等情况下,内存管理可能是一种有效手段。文章介绍了mpmetrics 作内存管理的实现,重点讨论基于共享内存的动态变量分配。
很多编程语言使用分号作为语句的终止符,文章试图探究这种做法的起源,以及讨论分号相比其它符号有什么优点。(附:Python 是异类,请查看 Python 为什么不用分号作终止符?
🎁Python潮流周刊🎁本周刊已持续连载一年,更新内容接近 10 万字。我为此投入了大量的时间和精力,为了健康可持续性的发展,周刊即将转为收费模式。周刊的发展离不开你们的资助,目前为最低优惠价,欢迎订阅技术专栏

🐿️项目&资源

Meta 开源了最新一代的 Llama 大模型,包含 8B 和 70B 参数版本,支持 8K 长文本,性能、推理能力和代码能力都有增强。(star 17.7K)
仓库收录各种网友及厂商微调、魔改版本有趣权重 & 训练、推理、部署教程视频 & 文档。(star 1.9K)
提供了非常实用的功能,只需将待提取文本的网址放在“https://r.jina.ai/”之后,即可获取 Markdown 文本。也支持 JSON 格式,但目前是早期测试版本。(star 3.4K)
一个任务队列库,默认为每个子任务 fork 一个子进程,但也支持同步方式;支持任务锁、任务重试、灵活排队、批处理、定时任务,等等。(star 1.4K)
通过命令行方式来添加、编辑、总结你的任务耗时,生成个人时间表和活动用时统计。
它可将视频转换为博客文章,并基于上下文添加视频截图,可方便 UP 主们二次传播自己的内容。依赖 FFmpeg 处理视频和截图,Tesseract OCR 引擎识别文本,OpenRouter 生成文章和关键字。
从头开始实现的小型 HTTP/1.1 库,用于构建使用 HTTP 的程序,并非requests 等库的替代,但可使实现类似的东西更容易。(附:h2:HTTP/2 协议栈的纯 Python 实现
它可让你同时在多个浏览器实例上使用不同的账号,并根据 URL 的不同参数打开指定的浏览器。
它能从短文本或混合语言的文本中检测出所使用的自然语言,对于语言数据的预处理有较大帮助。
强大的照片相似性搜索引擎,利用 CLIP(对比语言-图像预训练)模型,根据文本描述找到视觉上相似的图像。仅适用于苹果芯片 MLX。
运行在 Windows 平台上的 Rewind 替代工具,可根据 OCR 文本或对画面的描述进行搜索,摘要浏览活动。完全运行在本地,无需联网或上传任何数据。(star 1.3K)

49 谷歌裁员 Python 团队,微软开源 MS-DOS 4.0

博客原文 | 发布时间:2024-05-04

🦄文章&教程

本周的大新闻,谷歌裁掉了 Python 语言团队,虽然人数不到 10 人,但里面有多位 Python 核心开发者及指导委员会里的成员,因此引发的讨论热度极高。Python 是谷歌早期使用最多的语言之一,但遗憾所占的比重越来越少了。
这是一份 Github 文档,收录 FastAPI Expert 给出的使用技巧,目前已有内容包括:安装 uvloop 和 httptools 、在 WebSocket 上使用 async for 而不是 while True 、忽略 WebSocketDisconnect 异常、使用HTTPX AsyncClient 代替 TestClient ,等等。
这个 PEP 已被采纳,将合入 Python 3.15 版本(你没看错,算下时间应该是两年半以后)。它建议默认启用 UTF-8 模式,当开启后,包括文件、标准IO 和 管道的文本编码将使用 UTF-8,更方便 Python 与它们的操作。
一篇长文教程,详细介绍了Pydantic 库的使用。这个库利用类型提示来帮你校验和序列化 Python 对象,使代码更可靠、更可读、更简洁,而且更易于调试。它已用 Rust 重构了核心的验证逻辑,性能非常快。
关于 Python 项目的配置文件管理和数据读写,有什么最佳实践?文章的主要思路:使用 YAML 文件记录配置类及数据类内容,抽象出专门的配置类/数据类负责读写操作。(分享自@AlterNao1)
作者发现使用requests 库发起并发 https 请求时,开启 CA 证书验证的耗时是不开启的 1~5 倍,主要耗时在于调用loadverifylocations() 。作者提交了一个 PR,通过避免重加载根证书来提高并发性能,文章分析和解读了这个问题。
Python 3.13 预览版已包含一个 JIT 编译器,目前关于它的介绍还比较少。作者打算写一系列文章深度解析 Python JIT 的内部原理,这一篇解读的是在 JIT 编译器启动前,CPython 的运行时中所发生的事情。
睡眠排序是一种有趣但不实用的排序算法,通常用于教学目的。文章介绍了它是什么、操作系统任务调度过程、以及如何用 Python asyncio 实现 sleepsort。
莱布尼茨公式在数学史上具有重要意义,是最早出现的 π 的无穷级数表达式之一。文章用 3 种语言分别实现这个公式的计算,作了语言间的性能对比,以及 Python 3.8~Python 3.12 这 5 个版本的性能对比。
Trey Hunner 是一名高产的 Python 博主,前 PSF 董事,以及各类 Python 活动的常客。文章分享了他多年来参加和组织过的 Python 会议,结识过的人,以及学到的东西。(PS. 2024 PyCon US 将在本月中旬举行)
for 循环是编程语言中极为基础的代码结构,但它在不同语言中的现状和演变过程却很多样。作者从 for 循环的基本格式、foreach/forstep 语法、对比 while 循环的表现力、for 循环的扩展(map、reduce)等方面写了一些思考。
“10x 工程师”是一种让人向往的境界,指的是那些生产力和影响力远超同行的工程师。作者认为这些人拥有 7 个很重要的习惯,包括“代码是为人写的,而不是为计算机”、“使用一致的标准”、“编写简单的代码”,等等。

🐿️项目&资源

Pydantic 团队推出的可观测性平台,简单而强大的仪表板,支持丰富的 Python 对象显示,事件循环遥测,Python 代码分析和数据库查询分析。
面向基础设施的自动化工具,速度很快,可从一台服务器扩展到数千台服务器。非常适合临时命令执行、服务部署、配置管理等。(star 3.2K)
可在多个相互隔离的虚拟环境中安装和使用 Python,实现了pipx 的大多数功能,因为使用uv 替代venv 和pip ,所以性能更快。
它可与 Figma API 交互,获取文件的详细信息并将其转换为代码。支持占位符文本,支持多个 frame,支持根据背景设置前景色。(附:同样功能但更成功的 Tkinter-Designer ,star 8.3K)
Python 实现的以标签方式组织的文件/照片管理系统,支持跨平台、多用户、可管理几个 TB 大小。(star 1.5K)
便携式的安全转储,利用 pdb 接口,支持 unittest、pytest 和运行时异常。
一个开源的软件开发工具,对标 JIRA、Linear 和 Asana,可安心管理问题、冲刺和产品路线图。前端是 TypeScript Next.js,后端是 Python Django,很值得作为学习的全栈项目。(star 24.1K)
将 LLM 与 Playwright 结合,它可为网站、文档和 XML 文件创建抓取管道。只需说出要抓取的内容,它会自动完成。(star 1.2K)
自动测试播放速度,每日自动更新。 有 CCTV 央视卫视频道,及部分地方频道,播放流畅。也可在 openwrt 或群辉的 docker 运行。
用于在家中测量 ISP 性能的简单有效的工具,可测量多个性能指标,如数据包丢失、延迟、抖动和 DNS 性能。
将不可信的文件(如邮件附件)转换为安全的 PDF 文件。在沙盒中处理,过程是先将文件转为 PDF,然后转换为原始像素数据,最后转换回 PDF。(star 3.2K)
微软将 MS-DOS 4.0 操作系统开源了。这个版本其实发布于 1988 年,是首次引入图形用户界面的 DOS 版本,比较有历史意义。(star 28.3K)

🐢播客&视频

这是一份 Google 文档,目前已收录 864 期 Python 演讲视频,播放地址都是在 Youtube,内容主要出自 2023 年 PyCon、PyData、EuroPython 等活动。
上一则分享的视频列表中播放量最高的一期视频,后端用 FastAPI + Jinja,前端用时下流行的 HTMX + Tailwind CSS。(附:视频作者的一篇博客 ,介绍了相关实现以及源码仓库)

50 我最喜欢的 Python 3.13 新特性!

博客原文 | 发布时间:2024-05-12

🦄文章&教程

Python 3.13 在进入功能冻结期前,添加了一个全新的 REPL,作者表示这是 Python 3.13 中他最喜欢的特性。新的 REPL 确实让人眼前一亮:彩色提示、下一行自动缩进、tab 自动缩进 4 格、exit 和 help 不用再加括号、支持块级历史记录、支持粘贴代码块……这些新功能也是我一直想要的,现在终于要支持了。遗憾的是,它还不支持 Windows 系统!
Python 3.13 beta 1 版本已发布,改动内容真不少呢,文章做了一个简单盘点:改进的 REPL、自由线程(无 GIL Python)、JIT 编译器、python -m random 生成随机数、对 iOS 的 tier 3 级支持,等等等。(附:所有变更内容,详见官方文档 What’s New In Python 3.13
作者用生成器、async和await关键字,逐步从零构建,成功模拟出asyncio的事件循环和任务调度机制,可加深你对asyncio内部工作原理的理解。(附:文章的中文翻译
这是一篇标题友好的无情吐槽文,被吐槽的是火山引擎的 TTS 接口及其 SDK 设计。作者详细分析了对方代码的问题,给出了改进建议和原则,最后还贴心给出了 62 行的改进版本,远胜原始的近 500 行的版本。
文章收集了很多 Python 文件操作的知识和代码片段,涉及基础和进阶的各类文件操作,可以查漏补缺。最后还演示了从给定目录下模糊搜索一个文件的代码。
一个用 Django + HTMX 开发 Web 小游戏(Connect Four)的简单教程。通过游戏项目来学习编程,应该是效果不错的方式。
计算器是很好的用于练习 Python GUI 编程的项目,类似的教程在网上有不少,但是像这篇那么详细介绍每一段代码的应该不多。
在入门数据科学时,哪些错误时常会发生?这篇论文对 500 多份样本作定性分析,指出了这几类错误:逻辑错误、语义错误、次优编码、对语言和环境的误解。
“Unsafe Python“是指可能导致安全风险或内存安全问题的技术。作者使用pygame 和OpenCV 来处理图像缩放任务,发现性能差距很大,原因是由numpy 数组的内存布局(strides)引起的,最后通过优化内存访问模式来提升性能。
这是在 Python Discuss 论坛上的一篇帖子,作者想梳理字典的技术细节和历史演变,但是发现字典在不同版本的插槽数、扩容机制和初始大小等方面差别很大。
marimo 是作者开发的一款 notebook 产品,是 Jupyter notebook 的竞品,已经被斯坦福大学和贝莱德等机构使用。文章介绍了其三项设计原则:可重现、可维护、多用途,为什么要采用这些设计,以及在实现的过程中学到的几点经验教训。
PSF 发布了前两年对 Python 社区的资助计划的透明度报告。我们周刊第 30 期分享过泛非 Python 社区的一封公开信,就是质疑 PSF 的资助计划。报告公布了各项支出、趋势、百分比等数据,特别分享了关于非洲早年的几起资助。

🐿️项目&资源

这是一个大动作模型(Large Action Model),使用自然语言操作 Windows 系统。目前支持所有通用的 win32api 应用。
判断某年某月某一天是不是工作日/节假日,支持 2004年 至 2024年。(附:另一个同名的项目chinese-calendar,是个农历/阴历与阳历/公历的转换与查询工具)
支持搜索和查看 PyPI 上的软件包,支持查看 pip/pdm/rye/poetry 安装命令,支持查看每周下载量和趋势图。
使用一套统一的接口来对接不同的文本转语音(TTS)服务商,已支持 Edge-TTS、OpenAI TTS、Azure TTS、Google TTS、火杀引擎、百度 TTS、Minimax TTS。
Python Web 开发框架,基于 Starlette + htmx + tailwindcss,具有热模块替换(HMR)、基于路径函数的 URL 定位器、依赖注入等特性。
哈佛大学的 CS50 是一个计算机科学入门课程,有 11 周课时安排,免费提供所有学习资源,可颁发课程证书。今年的变化是引入了由 ChatGPT 支持的对话机器人,可帮助回答与课程相关的问题。
Portr 是一种隧道解决方案,可向互联网公开本地 http、tcp 和 websocket 连接。它利用 SSH 远程端口转发来保证隧道连接的安全性。(star 2K)
这个项目对四个流行的 Python 压缩库(zlib、LZ4、Brotli 和 Zstandard)进行对比,衡量了压缩比、压缩时间、解压时间等指标。
使用 Python 开发的 Excel,单元格中支持 Python 表达式,并且每个单元格返回的都是一个 Python 对象。可从单元格访问 Python 模块,包括 Numpy;支持导出 CSV、SVG 和 PDF 等格式。
pyspread界面
一个极简的 Python 任务队列库,使用 PostgreSQL 的 LISTEN/NOTIFY 来管理任务作业,使用 pg 的FOR UPDATE SKIP LOCKED 实现可靠的并发处理。
除了用作图像生成和简单的问答,你还用 AI 做过什么有用的事情?这是 Reddit 的热门帖子,可以看看别人都开发过什么项目,从而找找个人项目的创意。

🐢播客&视频

Pablo Galindo 和 Łukasz Langa 开发了 Python 3.13 中新的 REPL,他们在播客中聊了开发这个特性的故事,也分享了 CPython 最近改动的一些特性,比如新的 JIT 和 Python 对 iOS 的支持等。
这期播客的嘉宾是 PyScript、pdb++、pypy、HPy 和 SPy 等开源项目的贡献者,播客聊了参与开源开发的相关话题。

51 用 Python 绘制美观的图表

博客原文 | 发布时间:2024-05-18

🦄文章&教程

这篇教程使用 streamlit + pandas + plotly 开发一个可交互的数据可视化项目,介绍了数据集的获取以及详细的开发步骤。
一篇短小精悍的文章,讲清楚了为什么不应该用 result 作为变量名。虽然是一个很小的编程规范点,但真的很常见,我自己初入职场的几年也是反面例子。
Python 中有多种日志库,Loguru 是目前最流行的三方日志库,使用简便。这篇教程从它的安装开始,逐步介绍它的相关功能,适合作为入门学习。(附:对比最流行的 6 个 Python 日志记录库
企业级 Python Web 项目开发使用 Django 框架的不少,文章分享了 35 道从初级到高级的 Django 面试题以及简短的答案。
集合的元素是可哈希的不重复的内容,这点跟字典的键很像。文章通过用没有值的字典来模拟实现集合数据结构,实现它的各种方法。预警,一点也不实用。。
PyPI 上的恶意软件包手段真高超,文章提到的库将 Sliver 二进制文件隐藏在 PNG 图片中,在操作系统安装这个包时会解码图片并执行后门代码。
TensorFlow 和 PyTorch 是两个主流的深度学习框架,分别出自谷歌和脸书,前者的流行趋势正在被后者赶超,文章分析了出现这种现象的几个原因。
延迟计算(lazy evaluation)就是在需要使用时再计算求值,即按需调用。Python 中有哪些延迟计算的例子、这种实现有什么好处、又有什么缺点?
这是“Python 3.12 源码剖析”系列的开篇,介绍了 CPython 源码的项目结构、Python 解释器的基本组成。专栏预计更新 100 多篇,目前免费已更新 5 篇。
一篇写于 2015 年的文章,作者分享了自己开发的 10 个项目,主要为 Python 和 C 语言的。第一个项目是用 C+Python 写的 Minecraft 克隆项目,Github 10K star,其它项目也都挺有意思。
大语言模型已经成为很多人必不可少的效率工具,它的智能来自哪里?文章试图用简单的术语和少量 Python 代码,不用高深的数学知识,来解释 LLM 的工作原理。
作者发现了一个常见的问题:Python 和 Ruby 等语言都有 JIT 实现,但这些编程语言中的替代实现都有一个问题,就是要艰难地跟进官方实现的新功能,要兼容新的语言规范,因此受到诸多的限制。

🐿️项目&资源

这个项目是一个网站的源码,网站很有意思,收录了大量的图表、制图工具、示例代码和文章教程。(star 1.8K)
一个轻量级文本转语音 (TTS) 模型,可根据给定说话者的风格(性别、音调、说话风格等)生成高质量的听起来很自然的语音。完全开源,包括数据集、预处理代码、训练代码和权重值等。(star 2.6K)
一个开源的车辆流量模拟器,绘制车辆运动轨迹,模拟交通拥堵情况。使用matplotlib 作可视化,提供了交互式 GUI。
输入一个目标图片,它会将图像切成象限,并在每个象限填充原图的平均颜色,最后呈现的效果还挺酷的。(star 1.2K)
基于 B 站评论微调的聊天机器人,支持文字聊天,也可通过 questions.txt 生成针对给定问题的语音对话。基础模型为 Qwen1.5-32B-Chat。(star 2.3K)
这个 Docker 镜像旨在支持使用 Python 实现 Github Actions。
抓取任何网站内容,将其转换为可用于 LLM 的干净的 markdown 文件。无需站点地图,会抓取所有可访问的子页面,并为每个页面生成 markdown。(star 3.1K)
使用盲文点、前景色和背景色在终端中绘图、散点图、直方图和热图,无外部依赖。
一个数据处理工具,可将 JSON、CSV、Xlsx、XML、HTML 等文件转换,写入到 MySQL、Postgres、S3 等存储中。(star 1.2K)
阿里达摩院开源的使用 LLM 作视频剪辑的工具,可基于语音识别结果,自由选择文本片段和演讲者进行剪辑。(star 1.7K)
OpenStreetMap 是一个世界性的免费地图项目,map-machine 可将地图丰富的要素通过自定义图标展示出来。
提供了两种类型的模型:文本生成照明模型和以背景图片生成照明模型。可以给普通图片加上符合场景和光源方向的光影特效。(star 3.1K)

52 Python 处理 Excel 的资源

博客原文 | 发布时间:2024-05-25

🦄文章&教程

这是一篇写于 2007 年的文章,介绍和对比了正则表达式的两种实现:传统方法和 Thompson NFA 方法。后者在某些任务上比传统方法快几百万倍,但使用普及度不及前者,作者呼吁编程语言可以改用后者。作者还写了 3 篇关于正则的文章,详见其文末。
注意图中单位,一个是秒,一个是微秒
作者不小心把本地代码删除了,然后设法中从运行中的 Docker 容器里恢复了自己的代码。使用到的库是pyrasiteuncompyle6 ,文章介绍了具体的操作步骤。
这个 PEP 计划合入到 Python 3.13 版本,作者之一是我们国内的@高天。在早期 Python 中,所有命名空间都是用字典实现的,后来出于性能原因变更了函数命名空间的实现,但导致了一些奇怪的 BUG。此 PEP 提议将所有命名空间再次保持一致的实现。
作者开发了一个packaged 项目,可替代 pyinstaller 将 Python 项目打包成可执行文件。文章介绍了它的迭代实现过程,亮点之一是用到了 python-build-standalone ,还有特别的是用了可自解压的压缩工具 makeself
py.space 是最近推出的一个网站,是Anvil 的精简版,可开发在 Web 上运行的 Python 应用。这篇教程演示了该网站的基本功能。
文章利用 Python 3.12 的模式匹配、typing 的泛型并结合数据类,实现函数式编程的类似功能。现在 match-case 的使用场景不多见,文章做了很好的示范。
Github 支持添加个人的自述文件,有很多开源项目可以让我们美化自己的主页。作者用 Python 实现抓取自己博客文章,利用 Github Actions 实现动态更新。我准备等有空也去试试。
pyastgrep 是作者开发的库,可使用 XPath 语法查询特定的 Python 语法元素。文章介绍如何用它作自定义的代码检查,执行其它工具无法满足的编码规范检查。
pygments 是一个可将代码或文本作高亮显示的库,作者为了在 PyCon 演讲时演示代码片段,于是用这个库生成自己的代码图片。文章介绍了具体的实现过程、优势和建议。
Llama 3 是当前开源大模型的佼佼者。文章详细介绍了这个模型的关键组件,在不依赖深度学习框架的情况下,使用纯 NumPy 实现 Llama 3 模型。
文章提出了一个暂时还无解的问题。AI 辅助编程已兴起,人类依赖 AI 完成的代码会越来越多,那么,关于这些代码的知识产权该如何判定,AI 生成部分在法律上是无版权的,由此可能会带来法律风险。
聪明的代码(clever code)很可能不是清晰的代码(clear code),建议大家不要滥用炫技式的一行流代码。代码的可读性至关重要,文章区别了好代码与坏代码,并给出了如何写出清晰代码的一些建议。

🐿️项目&资源

这个网站收录了一些可读写 Excel 文件的库(openpyxl、xlsxwriter、pyxlsb、pylightxl、xlrd、xlwt、xlutils)、可编写 Excel 加载项的库(PyXLL、xlwings)。
号称是最简单的 Python 环境管理工具,无需预装 Python。一半的代码是 Rust。
这个仓库收录了一些编程题目,提升 PyTorch 水平。(star 2.8K)
提供了一个IoC(控制反转)容器,可简化对象的创建和管理,避免手动传递对象或使用全局变量。
基于 Django + HTMX,可将 Python 脚本转换为交互式的 Web 应用。
让 AI 来帮忙生成测试代码,有效提升代码覆盖率。目前主要是单元测试,仅支持在终端运行。(star 2.6K)
前文已提到过这个语法高亮工具,它支持 500 多种语言和文本格式,可用于代码仓、论坛、wiki和其它需要美化源码的地方。(star 1.7K)
在数据仓库中定义和查询 BI 模型,表达式使用 Python 定义,编译为 SQL,能表达复杂的多层查询,能力超过标准 SQL。
这是 Hacker News 上的问答帖,提及的一些项目有:pymetrics、ddtrace、datadog、statsd、pyformance、prometheus 的 Python 客户端,等等。
基于tenacity 作了封装的重试库,亮点有:仅在某些异常时重试、指数退避、自动支持异步、可全局停用以作测试,以及拥有开箱即用的 Prometheus、structlog 和标准库 logging 支持。
通过 git push 命令将自己的应用部署到个人服务器上,不管服务器规模大小。支持 ARM 和 Intel 架构,适用于任何可以运行 Python、nginx 和 uwsgi 的云服务商或裸机。(star 2.6K)
根据自然语言生成为可执行的 SQL 语句,仅支持 PostgreSQL 数据库。

53 我辈楷模,一个约见诺奖得主,一个成为核心开发者

博客原文 | 发布时间:2024-06-01

🦄文章&教程

真我辈楷模啊!我们周刊的常客 @frostming 由于开发了 PDM 的缘故,被 2018 年诺奖共同得主 Paul Romer 约见。文章分享了这段让人兴奋的经历,其中提及 Paul 在做一个帮助 Python 初学者搭建开发环境的 GUI 应用,想不到他会关注这种事,瞬间引起了我对他的好感。
又一位我辈楷模!@高天 仅花一年多时间为 CPython 作贡献,现已正式成为 Python 核心开发者。全球目前活跃的核心开发者不到 100 位,能成为其中一员实属难得啊。(附:这篇提名高天的帖子,详细总结了他为 Python 做的贡献)
文章从一个很奇怪的问题开始(见下方截图),介绍了 IEEE-754 双精度格式表示法,深入到 CPython 解释器源码解读了 Python 在比较浮点数和整数时的算法。不同于 C 和 Java 等语言隐式将整数转换为双精度,Python 具有无限精度的整数,因此设计了专用算法来实现比较。
超大整数与浮点数比较时的奇怪结果
超大整数与浮点数比较时的奇怪结果
Python 3.13 是较为独特的版本,本周刊已分享过不少内容。然而,作者最看重的特性却是新的dbm.splite3 ,解决了他使用 dbm+shelve 在不同操作系统不兼容的问题。
作者在 PyCon US 2024 上发表闭幕主题演讲,分享 6 年来关于 Python 打包的一些故事。这篇文章罗列了很多与演讲话题相关的链接和参考资料。
从上一则分享的博客中发现,Beautiful Soup 已经发布 20 周年了!它常用于爬取解析和网页内容,这篇周年纪念文章回顾了一些故事,同时主要想收集更多用户故事,计划出一本选集。这么长久健康发展的项目,开发者还富有人文情怀,值得点赞。
作者曾经很喜欢 Ruby 但不喜欢 Python,后来从 TypeScript 和 Rust 上发现了类型编程的强大之处,现在被支持类型提示和 match-case 的 Python 吸粉了,同时发现它还有一些很好的特性,所以已经转向了 Python 阵营。
文章介绍了 Django 中可简单替代 Celery 和其它复杂方案的异步任务队列实现,即“Django 命令”。文章演示了相关功能的使用,以及对可能出现的问题(例如死锁)的考虑。
Streamlit 是构建仪表板的绝佳工具,但是异步操作数据源很麻烦,文章介绍了如何更好地将两者融合起来,分析了 4 种实现思路。用到Beanie 库异步操作 MongoDB。
如何用 AI 数字化大量的文件,并回答用户提出的复杂的与数据相关的问题?文章介绍了用 Python 和LangChain来读取和分析 PDF 文档,用 SQLite 管理数据,用 LangChain SQL Agent 实现问答。
pyo3_asyncio 提供方便的接口来管理 Python 和 Rust 的 async/await 操作,支持两者间的 future 转换,并管理两种语言的事件循环。文章介绍了相关的实现原理和使用方法。
作者一直用pipx 安装 Python 依赖库,而且用的是 PyPy 解释器而不是官方的 CPython。多年来一直运行良好,没有明显差异,表明 PyPy 确实是挺成功的 CPython 替代品。

🐿️项目&资源

根据文件内容和时间等条件自动重命名文件,以及管理文件目录,支持多种文件包括图片和音频。拥有 Electron 开发的前端和 FastAPI 支持的后端。(star 3K)
号称是最快的 Python JSON 库,比标准库和其它三方库更准确。以本机方式序列化 dataclass、datetime、numpy 和 UUID 实例。(star 5.7K)
支持异步的 SSHv2 客户端和服务端实现,支持 SFTP 和 TCP,兼容 OpenSSH。单个 SSH 连接上同时多个会话,单个事件循环中多个 SSH 连接。(star 1.5K)
Blender 是一款功能强大的开源 3D 图形和动画软件,用于 3D 建模、渲染、动画制作和视频后期处理。这个项目将它集成到了 jupyter notebook。
尊重隐私的互联网元搜索引擎,汇总了来自 70 多种搜索服务的结果。支持自托管、无用户跟踪和分析、安全加密的连接、100 多个维护良好的实例。(star 9.7K)
Python Web 框架,无需写一行 HTML、CSS 或 JavaScript。提供丰富的 React 风格组件,声明式 UI 框架,完全的类型安全。
一个强大的书签管理器和个人文本迷你网络,也提供了 GUI 端。可从浏览器导入书签或从网络获取 URL 的标题、标签和描述。使用你喜欢的编辑器添加、撰写和更新书签。(star 6.3K)
简单的低成本个人简历生成工具,生成 PDF 格式的文件。
标准库itertools 提供了很多函数,这个项目是对它的补充,提供的函数非常之多,建议查看文档。(star 3.5K)
用 Rust 开发的 Python 项目管理工具,强制要求模块化设计,定义和规范包依赖关系,使开发和维护更容易。
构建在 Django 之上的 Web 框架,支持在单体服务上托管多个应用或微服务。内置安全和合规组件,提供企业所需的应用组件。
一个现代的 Python 包管理工具,有简单且相对快速的依赖解析器,兼容 PEP-517 和 PEP-621,有灵活且强大的插件系统,支持安装 Python,像 pnpm 一样的中心化安装缓存,节省磁盘空间。(star 7K)

🐧 往年回顾

54 ChatTTS 强大的文本生成语音模型

博客原文 | 发布时间:2024-06-08

🦄文章&教程

Python 中有许多可以直接在命令行中运行的模块,使用方法是python -m xxx 。文章做了非常全面的盘点,介绍了每一个模块的用法,最后汇总发现有 50 多个!(附:关于“-m”的更多介绍,Python 中 -m 的典型用法、原理解析与发展演变
作者曾是卡内基梅隆大学的计算机课程助教,他最喜欢教的编程问题是计算数字的长度。这是一个看似简单,但存在很多深层思考空间的题目,文章对此做出了详细的解释。
模块间的循环依赖问题是一种常见错误,一般推荐从代码的结构分层上解决。作者提供了一种简短而实用的修复方案,简单地说就是推迟查找函数的模块主体,以便所需的模块先完成初始化。
一个新发起的草稿态提案,建议添加一个sys.prevent_yields() 上下文管理器,在yield 会引发 RuntimeError 时,阻止任务,提升安全。
2024 年的 PyCon US 活动已结束了,官方录制的视频和演讲材料等资源还需等待。这是一名参会者的长篇游记,回顾了她在几天里见到的风景、活动过程、演讲议题、见到的人,等等。由衷感叹,官方 PyCon 的氛围真不错!
文章出自“Python游戏开发”系列,该系列已更新两篇。介绍了Panda3D 这个 3D 游戏引擎库的安装和基本使用,渲染出的效果图真的很棒。
文章介绍了如何在本地部署近两周火热的 ChatTTS 项目、基本使用和进阶用法。
一张图片包含书籍里的文字内容,现需要提取出文本信息,怎么实现,以及优化性能?文章使用了scikit-image 库实现图片处理,先使用 Numba 来提速,然后分别多次优化实现的算法,达到较理想的性能提升。
OpenAI 新发布的 GPT-4o 很强,那么用它来生成一个支持数据库操作的 Flask 项目,同时具有 HTML 页面和 Tailwind 样式,效果能到怎样的程度呢?文章给出了主要的提示词和代码,最终呈现的效果还不错哟。
Scrapscript 是一门小型的、内容可寻址的、网络优先的编程语言。作者详细介绍了如何用 Python 给它开发出新的编译器的过程,解释了一些关键模块的实现原理。
这是一篇长文,但是并不枯燥。作者用了一个很好的例子,在不断变化的办公室里找人,由此引出哈希函数、相等函数、不可变和可哈希、哈希碰撞等内容。
文章使用 7 种语言来实现一个计算单词出现频率的题目,给定了很多的约束条件。文中对每种语言的实现都给出了详细介绍,并讨论了优化方案。文末还罗列了很多其它编程语言的实现情况。

🐿️项目&资源

《Think Python》出新版了,中文书名《像计算机科学家一样思考Python》,上一版是 2015 年出的,原版和译文版在豆瓣都有 8.8 高分。
一系列关于音乐处理基础的 Python 笔记资源,是用于教育和学习音乐处理的材料集合。(分享自:云云)
热度居高不下的文本转语音模型,支持中文和英文,语音效果很优秀。(star 21.7K)
ChatTTS-ui 提供了一个简单的本地网页界面,同时也对外提供 API 接口。(star 3.4K) ChatTTS_colab 提供了一键部署(含离线整合包)!ChatTTS-Forge 提供了完善的 ChatTTS 封装,包括 API、WebUI、Playground 等。
Nike 公司开源,用于构建数据管道,与 PySpark 集成。
根据提示,生成书籍结构并扩展生成整本书内容。提供了托管在 Streamlit 上的版本,可以在线体验。
比其它缓存库快 5-20 倍,非常低的内存使用量(字典的三分之一),支持超过 7 种缓存算法,完全线程安全。
Google 内部用于快速开发 Web 应用的 UI 框架,使用 Python 代码编写 UI,响应式 UI、热重载、类型安全、丰富的 IDE 支持。(star 1.1K)
Qwen2 的官方仓库,支持 128K 上下文,显著提升了编码和数学能力。(star 4.2K)
翻译 RSS 的标题或内容,双语显示,支持 DeepL、OpenAI、Gemini 等多种翻译引擎,AI 内容总结,自动获取全文,缓存所翻译内容。
Perplexity 的开源替代,可运行本地或云上大模型。前端 Next.js,后端 FastAPI,日志记录 Logfire。(star 2K)
支持多种操作系统和 CPU 的命令行换源工具,可测试不同镜像源的速度,并选择最快的源。

🐢播客&视频

一则 Reddit 上的帖子,评论区有很多分享,可以去看看。
在核心开发者云集的 PyCon 2024 现场,这期简短的播客聊到了当下较值得关注的一些话题。
这个系列播客每期介绍一界图灵奖获得者,包括他们的成长经历、所做贡献、社会影响等,资料详实,深入浅出。

🐧 往年回顾

55 分享 9 个高质量的技术类信息源!

博客原文 | 发布时间:2024-06-10
大家好,我是猫哥,今天给大家分享几个高质量的技术类信息源。
本文分享的信息源都是周刊类型的,所谓周刊类,就是以固定每周的频率更新,每期分享很多精华内容的链接。它的特点是信息密度极高,可以节省你去查找信息的时间,高效的学习者都会喜欢这类内容。
如果不是看了这篇文章,我猜你可能想不到 Python 竟会有那么多的好东西,所以建议你可以收藏起来,总会有用的。
接下来我会逐一介绍每个信息源,并给出简短的点评。推荐指数从低到高,越往后面的越值得推荐!话不多说,开始吧——

1、Awesome Python Weekly

一份创刊自 2016 年的老牌周刊,每期分享大约 10 篇文章和 5 个开源项目,只有标题和链接,没有推荐语。已有 22K 订阅。
我并不推荐订阅,原因是:它是唯二把喂养蟒蛇的文章当成 Python 技术文章分享的;开源项目的链接放的是它网站的链接,需要再点一次才能跳到 Github;每期周刊有 3 则广告,而且是带描述语的,妥妥是所有周刊里含广率最高的……
虽然不推荐订阅,但我挺佩服周刊作者,因为他有 20 份技术类的周刊矩阵,能挣不少钱吧……
推荐指数:⭐

2、Python weekly newsletter

这份周刊跟上一份有不少相似之处:有标题和链接(以及评论数),但没有推荐语;曾把喂养蟒蛇的文章当成技术文章;作者有近 20 份技术类周刊,矩阵化自动化更新。
它很明显的特点是内容基本抓取自 Hacker News、Reddit、Twitter 和 Mastodon,比较依赖于评论热度,但质量良莠不齐。
它比上一份更值得推荐的点是:每期分享的文章、项目及视频较多,总数大约 25-30 条,而且很少有广告。
推荐指数:⭐⭐

3、This Week in Python

一份创立自 2022 年 3 月的周刊,每期固定分享 5 篇文章和 5 个开源项目。早期在每篇文章后有一句话简短介绍,现在只剩标题了,内容少而精,但是都能在其它周刊找到。没有广告。
值得推荐的点有:博主长期纯粹出于热爱的更新,以及偶尔会发布自己原创的文章。建议有自己博客的同学,可以像他一样每周简单分享自己阅读过的一些文章/项目的链接,人人都可以拥有自己的极简版周刊。
推荐指数:⭐⭐
订阅链接:https://bas.codes

4、Python on Microcontrollers Newsletter

这是 Python + 硬件方向的周刊,最近达到了 11K 订阅,成绩还不错。几乎没有广告。排版有点伤眼睛。
周刊以微控制器为题,其实是单板机(如树莓派)。随着物联网和智能家居等领域的发展,Python 与硬件的结合蛮有发展前景,只是这个领域的话题在国内比较小众。
推荐指数:⭐⭐⭐

5、Django News

创刊于 2019 年 12 月,聚焦于 Django 领域,内容主要是 Django 的新闻、开发版进展、文章、项目、活动和招聘等,不像其它周刊都是比较泛的话题。目前有 3.8K 订阅。
相比其它周刊,它的订阅数很少,但是广告收入很强。它是唯一公开报价,并可在线预约档期的周刊,每期两个广告位,每个 200 美元。
推荐指数:⭐⭐⭐

6、Python Hub Weekly Digest

创刊于 2012 年,应该是最早的周刊之一,作者是乌克兰人。每期大约 11 篇文章和 8 个开源项目/话题。
每期会包含前一两周的热门内容,而且常有一些发布时间很久的、近期没在其它周刊出现的内容。文章后基本都有一段介绍语,但内容经常只是简单摘自原文。它没有视频分类,所以常在“文章”类别下夹带视频。
页面干净,一直坚持无广告。它的社交账号很活跃,在 X 上有近 140K 关注。
推荐指数:⭐⭐⭐⭐

7、Pycoder’s Weekly

大概创刊于 2012 年,目前更新到第 630+ 期,订阅数有近 102K,X 账号的关注数有 120K。
它每期分享的非项目类内容有 15 条左右,项目类有大概 6 则,另外常有 Python 活动类资讯。每期广告数 2-3 则。
除项目外,它分享的内容之后基本都有一段推荐语,而且在内容下方还有网站或博客名称,以及投稿者的名称,这方面做得比其它周刊细致。内容上偶尔有些读者独家投稿,即没在别的周刊出现过。
周刊主理人也是 Real Python 的主理人,所以周刊上有很多自家网站上的文章和课程。
推荐指数:⭐⭐⭐⭐
订阅链接:https://pycoders.com

8、Python Weekly

创刊最早的 Python 周刊之一,已更新到 650+ 期。每期的非项目类(新闻、文章、教程、演讲、播客)大概 12-15 则,项目工具类 11-15 则,另外还有很丰富的 Pyhton 活动类资讯。
非项目类内容的推荐语有些写得不错,也有些仅是简单摘录原文。项目类的数量蛮多的,不过介绍语都是直接取自 Github 简介。
我很佩服它能更新这么长时间,而且每期的质量都不低。它营利的手段似乎只是广告植入,不确定那些活动类信息是否有收入。作者还有 2 份周刊,分别面向程序员和创业者,办得都不错。
推荐指数:⭐⭐⭐⭐⭐
Python 潮流周刊,唯一的中文 Python 周刊,也是唯一会给读者送福利的周刊,也是唯一实行付费订阅的周刊。
创刊于 2023 年 5 月,是所有周刊里最年轻的。目前每期分享文章/教程类 12 篇,项目/资源类 12 则,偶尔有播客/视频和热门讨论 2-4 则。赠书已超过 80 本。
周刊分享的内容较多,且都附有认真总结的推荐语,导致每期的篇幅都很长,所花费的时间精力远超其它周刊。
分享的内容约有一半是直接取材于其它周刊,相当于萃取了一遍;另外的一半内容主要来源于个人博客、技术论坛、Github 趋势等贴近于原作者的第一手信息。
周刊中偶尔会附上一些精美截图,对读者的阅读体验更佳,这也是其它周刊不具备的特色。周刊每 30 期作为一季,会做出阶段性盘点,并汇集成册,这有利于历史内容发挥长尾效应,沉淀知识。
其它周刊都是英文,且主要是邮件推送,不太符合国人的阅读习惯。Python 潮流周刊面向中文读者,还有基于微信的推送和阅读方式,更为便利。
推荐指数:⭐⭐⭐⭐⭐
以上 9 份周刊就是本文想分享的信息源。周刊的信息密度极高,是信息时代里值得推荐给所有人的聪明手段,推荐大家折优订阅。
有些周刊实现了较高的自动化抓取,作者靠着运营周刊矩阵,不靠质量而凭数量,每周能收获到不菲的广告费;有的周刊坚持十年如一日的更新,让人敬佩的是它始终不接广告;还有的周刊在保证质量的同时,作出多样化的营利尝试,只为可持续的健康发展。
除了这 9 个外,还有不少的同类周刊,但由于篇幅有限,这里只选取了较有代表性的几个。除了这些周刊外,还有很多值得分享的高质量信息源,本系列会陆续更新,欢迎关注。
PS. 本文是 Python潮流周刊的端午节特别加更。授人以鱼不如授人以渔,从分享信息到分享信息源。如果你也知道一些同类的信息源,欢迎留言分享~~

56 NumPy 2.0 里更快速的字符串函数

博客原文 | 发布时间:2024-06-15

🦄文章&教程

NumPy 2.0 即将发布,这是 2006 年以来的第一个大版本。作者介绍了他们如何重新设计它的字符串函数(isalpha、add、find 和 startswith),解释了它们的执行原理,并做出了性能提升的统计。
在项目文件中,你是否留意过突然出现的__pycache__ 文件夹,它是干嘛的,什么情况下生成的? 这篇文章详细介绍了它的作用、文件夹里的内容、生成的时机、如何递归删除、如何防止创建它、如何读取/执行和反编译缓存的字节码等。
CPython 如何实现内存管理的(包括引用计数和垃圾回收)?这是深度解读 CPython 解释器系列的最新一篇,分析了引用计数和分代垃圾回收的实现原理,研究了核心的数据结构、算法和源码,以及最新移除 GIL 时对内存管理的修改。
介绍了如何使用向量嵌入、向量数据库 qdrant 和 OpenAI 的 CLIP 模型,从零开始搭建一个图片搜索引擎。文中还用了 scrapy+selenium 爬取网上图片,使用 Flask 开发了简单的操作页面。
Pydantic 团队最近推出了一个新的日志记录工具 LogFire,除了简单打印日志外,它可以跟踪和分析程序的运行信息,记录 FastAPI 的请求参数和返回值,收集异常计数、连接数和内存使用情况等指标,看起来非常好用!
一个关于 FastAPI 的专栏,从基础到进阶,全面介绍 FastAPI 的使用。
作者用 Python 实现一个简单的 HTTP 服务端,以此来理解它的工作原理,介绍了控制请求、处理请求、发送响应等环节,以及所涉及的各项知识点。
微软在去年推出了“Python in Excel”预览版,好不好用呢?文章出自xlwings 库和《Python for Excel》的作者,介绍了他深度使用后的一些看法,认为这不是 VBA 的替代品而是 Excel 公式的替代品、将 Jupyter 笔记本单元格集成到 Excel 网格是个错误、等等。
照片中的书页有一定程度的卷曲,如何将文本内容提取成 PDF 文件?作者用“cubic sheet”模型作页面去畸变,用 OpenCV+PIL 实现文本提取。8 年前的文章,代码已开源在page_dewarp,已收获 1.4K star。
Celery 是广泛使用的分布式任务队列,但作者认为它存在诸多问题,文章讨论了三类:缺少或未实现的功能、有问题的默认行为、可观察性不足。
Ansible 是用 Python 开发的自动化工具,常用于网络配置管理和应用部署等运维场景。文章介绍了它最新的 Rulebook 特性,可从多个事件源获取事件通知,从而触发某些操作。
文章称很多 Python 教材套用其它语言的知识框架,导致出现基本概念的错误,如变量和赋值。学校中使用的 Python 教材都是哪些书啊?有没有在校学生分享下教材里的错误呢?(分享自@老不老)(附:Python 畅销书也有一些过时的表述,见 Python 已经支持中文变量名啦!

🐿️项目&资源

可将简单的 HTML 页面变成华丽的统计报告、发票、票据、书籍等。可读取普通文件、HTTP、FTP 和数据 URI。(star 6.8K)
一个安全扫描框架,可查找漏洞并执行侦察、枚举、指纹识别等操作。
JupyterLab 的跨平台桌面应用程序,支持 Windows、Mac 和 Linux,使用简单。(star 3.5K)
模式驱动的 Web 服务端框架。服务端 API 是 Rust、Node.js 和 Python 的原生 API,受 GraphQL 和 Prisma 启发,自动数据库迁移。(star 1.1K)
将 SQL 视为代码,写在“.sql”文件中,可加载到 Python 程序中作为函数调用,重用性高,可集中管理维护。(star 1.3K)
将 OpenAI 的代码解释器与 Python Notebook 开发环境结合,除常规功能外,还可用自然语言生成单元格、编辑代码、提问和修复 bug。
Windows Recall 和 Limitless Rewind.ai 的开源替代,隐私优先,支持 Windows、macOS 和 Linux。定期记录屏幕截图,分析其文本和图像,让你可通过语义搜索,快速查找信息和回看浏览记录。(star 1.3K)
requests 不支持异步,这个库为它加上concurrent.futures 的异步实现。(star 2.1K)
提供对 WebSocket 低级 API 的访问,实现了 WebSocket 协议的 hybi-13 版本。当前不支持 RFC 7692 中的 permessage-deflate 扩展。(star 3.5K)
用 Python 实现的 WiFi 渗透工具,帮助白帽黑客和测试人员审计和保护家庭及企业的网络。仅支持 Linux 系统,网卡需支持监视器模式和帧注入。
在 CI 服务器上运行,可构建和测试你的 wheel 包,目前支持 GitHub Actions、Azure Pipelines、Travis CI、AppVeyor、CircleCI 和 GitLab CI。(star 1.8K)
这是一个专门收集速查表(Cheat Sheet)的网站,分为编程、软件、商业与营销、教育、家庭与健康、游戏与爱好等类别。其中 Python 分类下有 446 份,是所有类别中最多的。

🐧 往年回顾

57 Python 该采用日历版本吗?

博客原文 | 发布时间:2024-06-22

🦄文章&教程

距离 Numpy 1.0 发布已 18 年,2.0 版本是一个重要的里程碑。它引入了一些非兼容性的修改,重要的升级:清理和简化了 Python API、更新了标量提升规则、强大的 DType API 和新的字符串 dtype、增强 Windows 兼容性、支持 Python 数组 API 标准。(附:NumPy 2.0.0 Release Notes
我们去年将 Python 语言峰会的所有议题出了一期加更,今年只挑三则,更多议题请查看官方博客。这篇议题讨论的是将 Python 当前的语义版本控制(SemVer)改为日历版本控制(CalVer),即在版本号中加上年份,例如 3.26 表示在 2026 年发布的版本。备选的格式有以年份为主的“26.0.0”,以及年加月的“26.10.0”。
今年 Python 语言峰会的议题之一,出自国内最近成为核心开发者的@高天。讨论了可以给 pdb 添加的一些新功能,包括显示断点附加代码、终端中的语法高亮、支持自定义、处理更多场景(线程、异步、字节码、远程调试);也提出将 pdb 底层切换成sys.monitoring 以提升性能,但这会引入向后兼容问题。
今年 Python 语言峰会的议题之一,讨论 Python 在 iOS 和 Android 等移动端上的现状和发展方向。Python 3.13 对 Android 和 iOS 上的 Python 提供 Tier 3 级支持。BeeWare 团队正推动将 Python 开源包生态引入移动端,在 CPython 测试套件和构建工具上也会加大投入。
探讨了如何管理 Python 项目的环境和依赖项,以及如何有效地构建项目,内容较长。
作者使用 Python 已长达 17 年,到底是什么内容让她发出“啊哈”的感叹?作者研究str.join() 时发现一个奇怪的问题:当使用生成器作为str.join()的入参时,性能比使用列表推导式慢约 16%。原因是 join() 会先将生成器转换为列表,然后拼接,因此导致额外的开销。PyPy 则不会做这种处理,它用生成器做入参时比列表推导式快约 5 倍。
在使用资源时,经常要做重复性任务,如设置和关闭进程、打开和关闭资源。这些场景最适合用上下文管理器,文章介绍什么是上下文管理器、详细的使用指南、典型的使用场景和常见问题。
Rust 开发的高性能 Polars 正在蚕食 Pandas 的市场份额。从 Panas 迁移到 Polars 是不是很麻烦?会不会导致数据处理流程和工具不兼容?作者演示了无缝切换的过程。
这是对 PyCon 2024 一场演讲的文字报道,演讲者是给 Python 3.13 引入 JIT 编译器的 Brandt Bucher。介绍了 Python 3.13 前做的一系列改进,为什么要在 3.13 引入 JIT 编译器,团队当前所做的一些工作以及核心的实现细节问题。
文章分享了作者调试 Python 3.13 Beta 版本一个 Bug 的经历,涉及的模块是最新引入的 JIT/Tier 2 优化器。
作者用第 53 期分享过的tach 库分析 3000 个文件,耗时近 10 秒。文章分析了耗时多的原因,然后用 Rust 重写了 C 代码,结果提速近 20 倍。使用了性能分析工具有 py-spy、speedscope 和 Valgrind。
这是一个系列文章的第一篇,试图解析 Ruff 库的内部实现原理,包括 Rust 和 Python 如何相互操作、Ruff 第一个版本是如何工作的、现在版本有哪些组成部分等内容。

🐿️项目&资源

利用 OpenAI 的文本转语音模型和 Google Gemini 来处理 PDF 文件,生成自然对话类播客,并输出为 MP3 文件。
帮助用 Python 和 Rust 开发出漂亮的终端用户界面。包含一个强大而通用的颜色库。
Web 全栈项目,构建完全客户端渲染的 React 应用,后端基于 Django,支持表单、会话验证和消息。支持 Storybook 和 Vite 热模块重载。
从 DevOps 到 AIOps,查看告警并获取缺失的上下文数据,更快地找到根本原因。
一个用 Python 开发的图形图像标注工具,用 Qt 作图形界面。支持分类和清理图像标注,也支持视频标注,支持 GUI 定制。(star 12.7K)
简单的静态站点/博客生成器,渲染 4000 个 Markdown 文件大约花 1 秒钟。
以一种美观和清晰的方式将 curl(1) 统计数据可视化。单个 Python 文件,无外部依赖。(star 6K)
提供可视化编辑器,支持拖放,无需写代码即可构建 UI;用 Python 编写后端代码,界面与业务逻辑间实现关注点分离。(star 1.2K)
一个文档 OCR 工具包,支持 90+ 语言,行级文本检测,支持布局分析(表格、图像、页眉等)。(star 8.8K)
MiniCPM-V 系列的最新版本模型,共 8B 参数量,OpenCompass 得分超过 GPT-4V-1106、Gemini Pro、Claude 3、Qwen-VL-Max 等主流商用闭源多模态大模型。(star 7.5K)
用于检测多变量数据中的异常,支持 50 多种检测算法,下载量超过 1700 万次。利用 numba 和 joblib 进行 JIT 编译和并行处理,拥有超高性能。(star 8.1K)
NVIDIA 推出的框架,可将普通 Python 函数用 JIT 编译成在 CPU 或 GPU 上运行的高效的内核代码。专为空间计算而设计,可轻松编写用于物理模拟、感知、机器人和几何处理的程序。(star 3.4K)

🐧 往年回顾

58 最快运行原型的语言

博客原文 | 发布时间:2024-06-29

🦄文章&教程

支付系统早期使用 COBOL 语言开发,在 1990 年代开始转向 Java 或 C++,但如今正转向更为现代的语言,也就是 Python。作者对此现象给出自己的解读,给出了 4 个方面的原因。最关键的一点,Python 能帮人以最快的速度运行原型,在这个“快鱼吃慢鱼”的时代,得以占据主导地位。
上期已经分享过有人提议 Python 改用日历年做版本号的新闻,这是对应的 PEP 提案。格式3.YY.micro ,其中 YY 是指该版本发布的年份,例如 3.26 是指在 2026 年发布。
介绍了 Timefold 项目的优点和使用方法,可用于优化车辆路线问题、员工排班、任务分配、维护调度和其它规划问题。
出自深度解析 CPython 解释器源码系列,探析了集合(set)数据结构是如何实现的、它的数据模型、关键方法的实现(插入、查找、删除、弹出)。
你可能没有接触过weakref 模块,但它是许多库、框架甚至 Python 自身的基础。文章介绍了它是什么、有什么用途,以及如何在代码中使用它。
生成式 AI 正在帮助程序员更快速高效地开发,作者通过自己的例子,演示如何一步步让 AI 帮忙从很多漫画中找到他想找的那张。提出问题/项目想法,然后让 AI 不断挑战,看看它能做到什么程度,也许你会找到一些能提升自己日常工作的方法。
作者做了一个关于从命令行访问大语言模型的演讲,这篇文章是对其演讲视频的注释版/补充版文字稿。文中有很多参考材料。
想要将自己开发的包发布到 PyPI 上是怎样的流程?如何创建符合要求的 Python 包?可以使用什么包构建工具?配置文件中的配置项是什么含义?如何发布包?还有什么主意事项?
你是否碰到要将一个项目克隆到一个新的地方,然后将它运行起来?在启动时,关于虚拟环境、依赖项安装等操作,可以使用脚本自动处理,文章演示了一个非常基本的示例。
高效的 Python 开发者如何使用工具解决开发环境相关的问题?作者将自己多年的开发经验分享出来,主要关于如何使用 Make&Makefile 解决一系列问题,提升开发效率。
作者认为 Notebook 的流行并不是一件好事,文章从个人角度和团队角度,各列出了 Notebook 不好的 4 条理由,包括缺乏版本控制、不像 IDE 纯粹和方便阅读代码、不便于协作、难以移动和测试,等等。
在实际的项目开发中,我们可能会遇到作者那样的情况:为了解决 A 问题,克服重重困难终于实现了 B 解决方案,但接着发现它在某种场景下会失效,最后迫不得已采用全新的 C 解决方案。在解决问题的过程中,一些有价值的经验教训就出现了。

🐿️项目&资源

这是一本开源的 Python 电子书,包含 30 个大章节,涵盖 Python 基础到进阶的系列内容。可在线阅读,也可下载 PDF 版本。
一个 CLI 库,可与安装在本地的大模型交互,也可以调用线上大模型。在命令行中运行提示词,将结果存储在 SQLite,生成嵌入,等等。(star 3.4K)
开发完项目后,让大语言模型直接帮你生成所有的文档!
构建 Python 开发环境时,环境管理、版本选择、依赖管理等问题的示例配置。
这个库的名字是“秃鹫”,很形象地表明它的用途:查找并清理代码中死亡的(未使用的)代码。使用静态代码分析,速度很快。(star 3.2K)
电脑端微信的清理工具,可自动删除所有聊天中自动下载的大量文件、视频、图片等数据内容,解放你的空间。(star 4.2K)
Windows 微信版的自动化工具,可收发消息、保存聊天图片。(star 1.8K)
可将有道云笔记的所有笔记按原格式下载,转换为 Markdown;默认将有道云笔记图床的图片下载到本地,可指定上传到 SM.MS。(star 1.2K)
跨数据库的数据比对,在数据库内执行差异计算,最大限度减少数据传输从而实现高性能。基于匹配哈希的分而治之算法,支持 10 多个数据库。
一个完整的 HR 管理系统,包含 13 个不同模块。前端部分使用的 Vue 框架。
适用于任何使用 LLM 的项目,提供实时跟踪/监控系统界面。
在熟悉的 Jupyter Notebook 之上,使用本地 AI 生成和编辑代码单元、自动修复错误以及与数据聊天。

🐧 往年回顾

59 Polars 1.0 发布了,PyCon US 2024 演讲视频也发布了

博客原文 | 发布时间:2024-07-06

🦄文章&教程

Polars 成立 4 年,已获得 27.5K star,现在正式发布 1.0 版本。今后的计划包括设计新的流式处理引擎、使用 NVIDIA RAPIDS 实现 GPU 加速、提供 Polars 云托管服务,等等。(附:Polars vs. pandas:有什么区别?
一些 APP 在升到 Python 3.12 版本后,因含有特定字符串“itms-services”而被苹果应用商店拒绝。文章回顾了 Python 开发者们长达一周的讨论,最终共识是在 Python 3.13 版本中添加构建选项--with-app-store-compliance来解决这个问题。(附:Python 论坛的详细讨论
从 PDF 文件中提取文本时会面临诸多问题:基于位置的固定布局、缺乏逻辑结构、包含扫描或拍摄的图像、伪影、表格内容和纵横向页面等。文章介绍了LLMWhisperer 的 PDF 转文本服务,以及它是如何有效解决内容提取问题。
非负整数 n 的阶乘是指所有小于或等于 n 的正整数的乘积。文章介绍了多种实现方法,包括 math.factorial(n)、迭代法、生成器方法、列表推导式法、递归法,等等。
文章给出了 27 条关于 Python 开发的建议,涵盖 Python 环境管理、依赖管理、项目结构、格式化工具、测试工具、建议的语法、应用设计、软件库的选择等方面。
MicroPython 是专为微控制器和嵌入式系统设计的Python 解释器,这个入门指南系列开篇介绍了环境配置、一些基本概念和基础使用。
Python 项目提升性能的方式之一是调用其它语言开发好的类库,文章介绍使用pythonnet 库调用 .NET 开发好的 dll 库,并测试了它与原生 Python 代码的性能差异。
作者介绍了如何将 Python 程序嵌入到循环神经网络(RNN)中,并利用训练有素的 RNN 来执行任务,相比于手写算法并反复调试改进,嵌入到神经网络的方法表现得更好。
稀疏数组(Sparse Array)中大部分元素都是零或者其它形式的占位符,只有少数元素是非零或有意义的值。文章介绍为什么要用稀疏数组、常用的存储格式、用于处理稀疏数组的 Python 库(sparse、scipy.sparse、cupyx.sparse、torch.sparse 等)。
当你在 Stack Overflow 等地方提了个问题,有人留言说可以安装某个库解决,这时候你大概率会去尝试一下吧?然而,这个库有可能是个恶意软件!文章分析了最近一个“新颖的”攻击方法,提醒大家留意。
作者介绍如何用 JavaScript 的Prettier 格式化工具及其插件,对 jinja 模板文件做格式化,另外还提及两个纯 Python 实现的替代方案:curlylintDjHTML
编程时经常涉及要同步修改代码中的多个位置,文章介绍了两种方法:派生与测试。文章通过 4 个现实示例演示了相关用法,理想化的全自动同步方法可能要付出很大代价,手动同步代码并配合测试或许会更合理。

🐿️项目&资源

微软最新开源的 RAG 系统,使用 LLM 的强大功能从非结构化文本中提取有意义的结构化数据。使用知识图谱记忆结构来增强 LLM 输出。(star 4.6K)
基于 PyScript,完全在浏览器中运行的前端框架,部分灵感来自于 Vue。目标是支持 Pyodide 和 Micropython。
完全用 Rust 开发的提供给 Python 使用的 PostgreSQL 驱动,速度快,类型安全。
Jupyter 的改进版本,添加了 AI 代码生成和编辑、内联选项卡补全、侧边栏聊天和错误修复等功能。(star 1.8K)
Pretzel功能演示
这个项目旨在收集李白诗歌及相关资料,构建李白知识图谱,训练专业的 AI 智能体,最终开发出可互动的李白对话应用。
用 Rust 开发的正则表达式库,旨在替代 Python 原生的re 模块。大部分函数与re 相同,但也有例外。
使用 Llama-3 对大量繁体中文和英文数据进行微调而成的大模型,具有较强的语言理解能力、生成能力、推理能力、多回合对话能力。(star 1.1K)
tkinter 的美化主题,受 Bootstrap 启发的设计风格。内置 10 几个深色和浅色主题,大量预定义的小组件,支持创建自己的主题。(star 1.8K)
一个功能齐全的 Web 安全服务器(基于 NGINX),可无缝集成到多种环境(Linux,Docker,Swarm,Kubernetes 等),提供有控制台 Web UI。(star 3.8K)
一款交互式的绘图应用,当在画布上写上数学方程式时,多模态 LLM 会计算结果并显示在等号旁边。灵感来自 Apple WWDC 2024 的“Math Notes”演示。
效果惊艳的AI黑板
基于Cookiecutter ,能快速启动一个功能完备的 Django 项目。支持 Django 4.2 和 Python 3.12,有 100% 启动测试覆盖率。 (star 11.8K)
一个数字人系统,集成了各种技术,如 Whisper、Linly、Microsoft 语音和 SadTalker 说话生成系统。(star 1.2K)

🐢播客&视频

PyCon 官方上传了 2024 年 PyCon US 的演讲视频。
PyCon 瑞典也更新了他们今年活动上的演讲视频。

🐧 往年回顾

60 Python 的包管理工具真是多啊

博客原文 | 发布时间:2024-07-13

🦄文章&教程

Python 的包管理生态说得好听点是多元化,难听点就是支离破碎。作者对 10 几个 Python 包管理/虚拟环境管理工具做了个简单盘点,最后的建议是:数据科学/实验人员用conda,其他人在生产环境用pippoetry。(附:一篇中文翻译
一个 Python Web 全栈开发系列,使用 Flask 和 HTMX 开发一个具有交互性的博客,。该系列第二篇是高级版,加入了 TailwindCSS 和身份验证的功能。
作者在飞机上发现连 Wi-Fi 需要填信用卡,但能免费登录航空里程账户。于是,想出不断更新账号的个人资料来实现消息传递的方法。文章介绍了实现原理,实现了几个原型,包括即时通讯、时事新闻/股价和足球比分消息等,也给出了提升效率和改进的思路。
作者遇到一个跟随机数有关的 bug,于是研究如何让随机数变得可预测,并想完全不改动现有的 Python 代码。介绍了如何用ptrace来拦截和修改对getrandom 的系统调用。
ChatGPT 能在沙盒环境中执行 Python 代码和系统命令,作者揭开了它的神秘面纱,原来是 Azure 云平台 K8S 集群的机器,作者尝试了多种命令包括查看进程、访问网络、上传和下载文件等,还找到沙盒环境的完整 Python 源码,大约 650 行。
一个很有意思的项目,作者使用 AI、树莓派和电机装置创建一个自动从窗户投放帽子的项目,已开放线上售卖,这真是一种新颖的购物体验!
uv 是用 Rust 开发的 pip 替代库,Streamlit 云采用它后,相比 pip 获得了极大的速度提升。文章分析了为什么 pip 那么慢,以及 uv 使用了哪些提升性能的技巧。
作者本周在芝加哥 Python 聚会小组(The Chicago Python Meetup Group)发表了关于 CPython JIT 的演讲,这篇文章包含他分享时完整的 PPT 和相关资料。(附:如何上手最新的 CPython JIT?
通常一个 Python 软件包的名称跟它的模块名称一样,但这仅是不成文的约定。文章获取了 PyPI 上最受欢迎的 8000 个包,分析它们的命名,发现有 81% 的包名和模块名一样。文章还分析了其它内容,包括命名空间、常用的前缀/后缀等。
作者开发的Cirron 库能跟踪系统调用并记录单行代码的性能。文章利用它来对比了 Python 和 Ruby 在文件 IO、生成随机数、显示时间、打印字符串等操作时,系统调用命令及耗时的差异。
介绍了如何让 Github Action 自动执行爬虫程序,并将爬到的数据保存到 Github Artifact 里,全免费无需服务器。文章介绍了相关流程、配置内容和实现限制等。
作者从事软件开发 35 年,给大家分享 12 条深刻的经验教训,主要是些软技能,包括以最直接的方式做事、人际关系很重要、永远不要隐身、心甘情愿做事,等等。
作者作为一名经验丰富的程序员,很希望自己能早点看到这些建议:主动修复易被忽视的小问题、权衡开发速度与代码质量、简化复杂问题、对 BUG 刨根问底、接受不完美代码,等等。
🎁Python潮流周刊🎁第 1 季精华内容已整理成精美电子书(EPUB/PDF),请给 Python猫 公众号发送“W30”,获取免费下载链接。

🐿️项目&资源

DNS 模糊测试,检测可能的恶意域名,发现网络钓鱼攻击和品牌冒充等问题。(star 4.7K)
在终端上的类 Postman 和 Insomnia HTTP 客户端,支持语法高亮、Vim 快捷键、各种内置主题、可自动补全的环境变量、用于快速访问的命令面板,等等。(star 1.9K)
为文件系统的接口生成模板和规范文件,以便提供稳定可靠的通用行为。Pandas、Dask 和 Huggingface Datasets 等库在内部都使用了这个库。
主要用于 Web 项目做国际化,处理多语言的展示问题。(star 1.3K)
可用于快速搭建和部署基于 FastAPI 的服务,技术栈还包括数据库映射 SQLModel、依赖管理 Poetry、数据库迁移 Alembic。
提取 AI、LLMsRAG 或 GPT 的数据。从网站下载 HTML、PDF、JPG、PNG 和其它文件,适用于 BeautifulSoup、Playwright 和原生 HTTP。提供有头和无头模式,支持代理轮换。(star 1K)
基于 Django 的项目,在 SQL 编辑器中编写和共享 SQL,在浏览器中查看结果。支持添加 LLM 助手,帮忙编写和调试 SQL。(star 2.7K)
用 Python 开发像素风的复古游戏,可在 Windows、Mac、Linux 和 Web 上运行,支持键盘、鼠标及游戏手柄输入。(star 14K)
针对 Linux 系统的 X 光透视,检测程序性能。支持测量线程级活动,查看单个线程或整个系统的 CPU 使用率。(star 1.2K)
实用的工具集,可运行安全评估的任务和工作流,支持数十种知名安全工具,提高渗透测试人员和安全研究员的工作效率。
将 RSS 转换为邮件,100% 免费开源,与 listmonk 集成发送邮件。
SQLite 的运行时可加载扩展,支持基于 hnswlib 的快速 ANN 搜索,支持 Windows、MacOS 和 Linux。
由快手、中科大和复旦大学开源的人物肖像动画模型,支持音视频串联、驱动视频自动裁剪、模板制作等。(star 6K)

🐧 往年回顾