从C的角度看,我对CPython的内部并不十分熟悉(尽管我是从Python的侧向负载中钻研来的!),但我了解基本原理。
该结构又必须传递给模块初始化函数中的解释器。初始化函数必须命名为
PyInit_name()
,其中 name 是模块的名称,并且应该是模块文件中定义的唯一非{static
}项:PyMODINIT_FUNC PyInit_spam(void) { return PyModule_Create(&spammodule); }
问题是,我不知道这意味着什么。假设我有一个简单的Python模块/ C程序组合:
#include "Python.h"
int main(int argc, char *argv[]) {
return 6;
}
PyMODINIT_FUNC
PyInit_spam(void) {
return PyErr_NoMemory();
}
作为模块导入时,这会成功引发MemoryError
吗?还是会引发ImportError
?