如果你在Python直接调用中你会发现很多的函数是不能被直接调用的,当然又不能直接调用的就会有在Python中直接被调用的函数,以下就是对可以直接调用的这些Python API的相关内容的介绍。
Python直接调用中会出现不直接调用的PyParser和PyTokenizer的函数,而是直接调用下面的这些Python API:
- PyAPI_FUNC(node *) PyParser_ParseString
(const char *, grammar *, int,- perrdetail *);
- PyAPI_FUNC(node *) PyParser_ParseFile
(FILE *, const char *, grammar *, int,- char *, char *, perrdetail *);
- PyAPI_FUNC(node *) PyParser_ParseStringFlags
(const char *, grammar *, int,- perrdetail *, int);
- PyAPI_FUNC(node *) PyParser_ParseFileFlags
(FILE *, const char *, grammar *,- int, char *, char *,
- perrdetail *, int);
- PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilename
(const char *,- const char *,
- grammar *, int,
- perrdetail *, int);
- /* Note that he following function is defined
in pythonrun.c not parsetok.c. */- PyAPI_FUNC(void) PyParser_SetError(perrdetail *);
PyAPI_FUNC宏是用于定义公用的Python API,表明这些函数可以被外界调用。在Windows上面Python Core被编译成一个DLL,因此PyAPI_FUNC等价于大家常用的__declspec(dllexport)/__declspec(dllimport)。
这些函数把PyParser和PyTokenizer对象的接口和细节包装起来,使用者可以直接调用PyParser_ParseXXXX函数来使用PyParser和PyTokenizer的功能而无需知道PyPaser/PyTokenizer的工作方式,这可以看作是一个典型的Façade模式。以PyParser_ParseFile为例,该函数分析传入的FILE返回生成的CST。其他的函数与此类似,只是分析的对象不同和传入参数的不同。
以上就是对直接调用下面的这些Python API相关的内容的介绍,忘你会有所收获。
【编辑推荐】