(Python学习7)Python编译结果——code对象与pyc文件

1、Python程序执行过程

与java类似,Python将.py编译为字节码,然后通过虚拟机执行。编译过程与虚拟机执行过程均在python25.dll中。Python虚拟机比java更抽象,离底层更远。

编译过程不仅生成字节码,还要包含常量、变量、占用栈的空间等,Pyton中编译过程生成code对象PyCodeObject。将PyCodeObject写入二进制文件,即.pyc。


有必要则写入A.pyc指的是该.py是否只运行一次,如果import的模块,肯定会生成.pyc。

2、PyCodeObject对象与.pyc文件

Python解释器将.py程序编译为PyCodeObject对象,具体过程与编译原理类似。

typedef struct {
    PyObject_HEAD
    int co_argcount;		// Code Block的参数的个数,比如说一个函数的参数
    int co_nlocals;			// Code Block中局部变量的个数
    int co_stacksize;		// 执行该段Code Block需要的栈空间
    int co_flags;			// N/A
    PyObject *co_code;		// Code Block编译所得的byte code,以PyStringObject的形式存在
    PyObject *co_consts;	// PyTupleObject对象࿰
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值