page contents

protobuf-py,一个神仙py库!

protobuf-py 是一个完全从零重写的 Python Protocol Buffers 库。它的目标很明确:让 Python 开发者用 Protobuf 的时候,感觉像是在写真正的 Python,而不是在给 C++ 引擎当“遥控器”。

attachments-2026-10-1BYwfgzZ6ad6cb4f75969.png一个偏“工程底层”但很有意思的小工具——protobuf-py。

它是什么?

protobuf-py 是一个完全从零重写的 Python Protocol Buffers 库。它的目标很明确:让 Python 开发者用 Protobuf 的时候,感觉像是在写真正的 Python,而不是在给 C++ 引擎当“遥控器”。

它解决了什么痛点?

Google 官方的 protobuf 包,底层是 C 写的 upb 引擎。你的消息对象其实活在 C 内存里,Python 这边只是个句柄。这带来了一堆让人难受的问题:生成的 _pb2.py 文件几乎没法读,里面全是序列化后的描述符字节;“转到定义”跳过去是一堆乱码;API 也是照搬 C++ 的风格,比如 HasField 在 proto3 标量上会直接抛异常。

protobuf-py 的做法是:消息就是普通的 Python 对象,带 __slots__,字段就是普通的整数、字符串、列表。生成的代码可读,类型提示完整,零运行时依赖(可选 Rust 加速器)。

怎么用?

用法和标准 Protobuf 一致,但生成的代码看起来舒服多了:

# 生成的代码会是带类型提示的普通 Python 类

user = User(name="张三", age=25)

user.name = "李四"  # 普通属性赋值,没有魔法

data = user.SerializeToString()

它通过了 proto2、proto3 和 editions 的全部一致性测试用例,支持扩展、自定义选项、未知字段和动态消息。装 Rust 加速器后,生产环境速度和官方 C 引擎持平。

安装

pip install protobuf-py

如果你受够了官方 Protobuf 在 Python 里的“异物感”,想要一个读得懂、改得动、类型提示完整的实现,protobuf-py 是一个很干净的选择。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2517 篇文章

作家榜 »

  1. Pack 2517 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章