【发布时间】:2018-04-13 18:09:45
【问题描述】:
我希望使用 Python3 C API 添加内置函数。我这样做只是为了帮助我熟悉 Python C API。 this 问题的答案很好地解释了为什么人们可能不想这样做。无论如何,我想在 Python builtins 模块中添加一个函数 foo。
这是我到目前为止所做的 (foo.c):
#include <Python.h>
#include <stdio.h>
static PyObject*
foo(PyObject *self, PyObject *args){
printf("foo called");
return Py_None;
}
char builtin_name[] = "builtins";
char foo_name[] = "foo";
char foo_doc[] = "foo function";
static PyMethodDef foo_method = {foo_name, foo, METH_NOARGS, foo_doc};
PyMODINIT_FUNC
PyInit_foo(void){
PyObject *builtin_module = PyImport_ImportModule(builtin_name);
PyModule_AddFunctions(builtin_module, &foo_method);
return builtin_module;
}
我将它放在 Python 源目录的 Modules/ 目录中。
【问题讨论】:
-
如果你要弄乱 CPython 源代码,为什么不直接edit the
builtinssource code directly?
标签: python python-3.x python-c-api