首页 > 解决方案 > Python Pickle 格式在哪里正式定义?

问题描述

Python 语言在“Python 语言参考”( 1 ) 中正式定义,其中包含有关 Python 源代码语法的详细信息。“Python 标准库”(2)参考对 Python 标准库做了类似的事情,包括 Pickle 模块(3)。但是,本文档并未真正解释 Pickle 格式的结构。

根据 的输出pickletools,以及阅读格式的一些解释,很明显 Pickle 是:

一个基于堆栈的虚拟机,它跟踪对象。该文件只是序列化操作码的列表,第一个是协议版本,最后一个是停止操作码。当满足停止操作码时,堆栈上的当前对象被弹出。( 4 )。

据我所知,这个结构和实际的操作码列表实际上都不是官方定义的任何官方 Python 文档。某些 PEP ( 5 ) ( 6 ) ( 7 ) 描述了在较新版本的规范中添加的操作码,但操作码的原始列表无处可寻。

Pickle 格式在哪里正式定义?它只是 Python 源代码吗?如果这是真的,如果标准库没有正式的规范,怎么可能创建一个新的 Python 实现呢?

标签: pythonpickle

解决方案


推荐阅读