本文主要是介绍tinypy源码分析(四)——函数调用的实现分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、函数的分类
在tinypy中,函数分三类
1. 内置函数(或者说C函数,builtin-function)
2. python函数,包括python的方法
3. 对象的实例化方法
二、函数的结构体
typedef struct tp_fnc_ {int type;struct _tp_fnc *info;int ftype;void *val;
} tp_fnc_;typedef struct _tp_fnc {int gci;tp_obj self;tp_obj globals;
} _tp_fnc;
从结构体可以看出来一个函数包括如下成员变量
- ftype:函数类型,0代表C函数,1代表python函数,2代表python对象的方法
- val:脚本函数体的字节码
- self:方法函数的自身对象
- globals:模块的全局变量
三、函数调用的实现
1. 函数调用的入口
/* TP是一个宏,具体内容如下,实际上就是一个虚拟机的结构体,函数并没有用到。 */
#define TP tp_vm *tpvoid _tp_call(TP,tp_obj *dest, tp_obj fnc, tp_obj params) {/* 对象的实例化 */if (fnc
这篇关于tinypy源码分析(四)——函数调用的实现分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!