Ned Batchelder back in 12008的帖子声称Python代码对象是在Python字节码文件中封送的:
[...] The entire rest of the file is just the output of
marshal.dump()
of the code object that results from compiling the source file.
这可能适用于在Python级别创建的代码对象,但是这些代码对象究竟是如何在C级别封送的呢?在
我查看了Python code objects(version 3.5)的文档,但对它们的描述不多,而且肯定没有提供关于它们如何编组的信息:
The C structure of the objects used to describe code objects. The fields of this type are subject to change at any time.
我也试着看一下Python code object's source code,但是没有找到任何能回答我问题的东西。在
如果Python代码对象是在C级别使用结构实现的(我相信是这样的),那么如何将它们封送到字节码文件中呢?就我所做的研究而言,C没有提供用于编组的内置方法,也没有提供任何第三方库?在
如果代码对象是在C级别封送的,它到底是如何完成的?如果不是,它们是如何编码到字节码中的?在
1我特别注意到了这个日期,因为这个细节可能在Python版本之间发生了变化。在
使用}之类的相关接口之一。在
marshal.dump
,或者可能是{它不像“委托给某个C标准库函数”那么简单;编组和解组实现包含一个1820-line file,如果您想查看每个细节,您必须阅读它。由于Python特有的数据结构和功能,大多数对象树遍历和序列化都需要从头开始编写。在
相关问题 更多 >
编程相关推荐