这里记录每周值得分享的 Python 及通用技术内容,部分内容为英文,已在小标题注明。(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)

文章&教程

文章讨论了编程中处理错误的四种常见方法:返回错误代码(C、Go)、异常(Java、C#、Python、C++)、回调函数(JavaScript)和 Result 对象(Haskell、Rust、Kotlin)。对每种方法进行了分析,介绍了它们的优缺点以及使用时需要注意的地方。
文章介绍了描述器的实现原理,分析了 CPython 源码中描述器相关的字节码指令,并使用 Python 代码解释了描述器的执行逻辑。文章出自 Github 上的《深入理解 Python 虚拟机系列》,该系列已含 20+ 文章。
最近 AI 孙燕姿太火了!文章基于 Python3.10 和开源库 so-vits-svc(高表现力的语音合成模型)、Spleeter(人声和伴奏分离)和 FFMPEG(声音与伴奏合并),手把手演示了让 AI 孙燕姿演唱歌曲。(PS.由于担心侵权风险,so-vits-svc 项目已经归档了)
文章介绍了 Python 的 C 语言 API 相关特性,最后实现了一个模仿官方 datetime 的 C 扩展模块。文章出自《Python 之 C 语言 API 系列教程》的第一篇,该系列目前已更新两篇。
这是一个系列文章,目前包含 31 篇文章,最近介绍的几个工具是数据库相关的:Neo4j(一个 NoSQL 图数据库,使用 Py2neo 操作)、PostgreSQL(一个关系型数据库,使用 Psycopg2 操作)、MongoDB、Access、ClickHouse、Redis 等。
Łukasz Langa 发起的新提案,提议支持在模块的全局命名空间中定义一个__call__对象以使模块可直接调用,__call__对象可以是一个标准函数或任意可调用对象。提案目前是草稿状态,未采纳。
在较新 Linux 系统上使用 pip install 时可能遇到“externally managed environment”错误。原因:Linux 发行版已预装某些 Python 包,pip install 可能导致系统包冲突。解决方法:开发时用虚拟环境;Docker 里不用系统 Python;需最新工具时用 pipx。Python 包管理较为痛苦,短时间内难以改善。
Bevy v2.0 是一个强大的依赖注入框架,可以帮助简化 Python 应用程序的管理。文章介绍了三种解决依赖关系的方法:全局变量、参数传递和依赖注入。Bevy v2.0 使用的方法包括参数注入、属性注入、仓库和依赖构造函数等。

项目&代码

最近几个月,乘着人工智能的东风,Github 上天天都被 AI 相关的项目屠榜,相信读者们已经从各种渠道看到过那些知名的以 Python 为主的开源项目了。因此,为了不撞车,本周刊主要收录一些小而美的项目。本期以中文开发者的项目为主。
一个“有生命的”语音助手 Python 项目,支持与前端通信、语音识别、chatGPT 接入和语音合成。前端部分可渲染人物动画、录音和播放声音。
具有以下特点:使用 top1 检索替换输入源特征为训练集特征来杜绝音色泄漏;即便在相对较差的显卡上也能快速训练;使用少量数据进行训练也能得到较好结果(推荐至少收集 10 分钟低底噪语音数据);可以通过模型融合来改变音色(借助 ckpt 处理选项卡中的 ckpt-merge);简单易用的网页界面;可调用 UVR5 模型来快速分离人声和伴奏。
一个可以将电子书翻译成指定语言(原文译文对照)的 Calibre 插件。支持多种翻译引擎,包括 Google 翻译、ChatGPT 以及 DeepL。支持所有 Calibre 所支持的电子书格式(输入格式 48 种,输出格式 20 种)。支持批量翻译、支持缓存续译、提供大量自定义设置。
一个完全重写的超轻量级 Python 引擎,零依赖,零配置,可以在 Flash ≤ 64KB,RAM≤ 4KB 的平台下运行,极易部署和扩展,具有大量的中文文档和视频资料。

播客&视频

“每一位 hacker,每一位开发者,每一位程序员,都值得拥有一个属于自己的小生意”。这档播客已发布了几期关于独立开发者的话题,对作为程序员的我们,在技术、产品、创业等方面会有所启发。
在 4 月的 PyCon 上,有一个专门展示新型 Python 创业公司的展台,叫做 Startup Row。在这期节目中,主播与这些公司的创始人分别聊了 5-10 分钟,这期节目同时包含了播客和视频。
Mojo 是 LLVM 及 Swift 之父新开发的 AI 编程语言,号称比 Python 快 35000 倍。Mojo 已支持 Python 的许多核心特性,包括 async/await、错误处理、可变参数等等,但是它仍然处于早期阶段,缺少许多功能,比如还不支持类!
鼎鼎大名的吴恩达联合 OpenAI,推出了一个面向开发者的 ChatGPT 提示词课程。这是 B 站上的链接,配有双语字幕。

问题&讨论

知乎上的一个热门问题,已有 7.4 万人关注和 1200+ 回答。
v2ex 上的一个帖子,吐槽使用 Conda 遇到了各种问题,包括安装后找不到命令、安装依赖卡住不动、影响系统更新等等。
这个帖子提出了一个想法:让 Python 的 for 循环支持推导式语法“for i in x if i % 2 == 0:”。

赞助&支持

内容创作要花费大量的时间和精力,如果你觉得有帮助,请随意赞赏买杯咖啡 进行支持!如果你喜欢本周刊,请转发分享给其他需要的同学,让更多人可以从中受益~
另诚邀广告主,欢迎通过私信联系。

关于周刊

本周刊已持续连载一年,更新内容接近 11 万字。希望周刊能成为你高质量的信息筛选器,成为你开阔视野的一扇明窗。目前已开通付费专栏,欢迎你来订阅:https://xiaobot.net/p/python_weekly