一、函数的分类
在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 *tp
void _tp_call(TP,tp_obj *dest, tp_obj fnc, tp_obj params) {
/* 对象的实例化 */
if (fnc