小小张说故事
Python 里 pickle 到底存了什么:拆开 __reduce__、__getstate__ 和那串能执行代码的字节码
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
小小张说故事
社区首页
>
专栏
>
Python 里 pickle 到底存了什么:拆开 __reduce__、__getstate__ 和那串能执行代码的字节码
Python 里 pickle 到底存了什么:拆开 __reduce__、__getstate__ 和那串能执行代码的字节码
小小张说故事
关注
发布于 2026-11-11 10:24:04
发布于 2026-11-11 10:24:04
25
0
举报
概述
pickle 存的不是数据,而是一段描述怎么把对象重新造出来的指令流,反序列化就是照着执行一遍。本文用本机 CPython 3.13.14 实测协议 0~5 的字节数由 101 降到 76、__getstate__ 让体积从 2817 降到 81 字节、__reduce__ 执行任意可调用对象的安全边界、循环引用与共享引用保持、__slots__ 在协议 0 下报 TypeError,以及 pickle 比 json 快约 3.3 倍,附六条排错清单
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
python
目录
一、先看它存出来的东西长什么样
二、六个协议的实测差异
三、__getstate__ 能让体积从 2817 字节降到 81 字节
四、__reduce__:pickle 真正的总开关
五、它能保住引用结构,json 不能
六、哪些东西存不了
七、__slots__ 有个协议版本陷阱
八、性能:pickle 比 json 快,也小
九、六条排错清单
十、一段可直接跑的完整示例
小结
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档