从C角度来看,我对CPython的内部结构并不是很熟悉(尽管我已经从Python端加载了它们!)但我理解了基本原理 .

Python documentation说:

反过来,这个结构必须传递给模块初始化函数中的解释器 . 初始化函数必须命名为PyInit_name(),其中name是模块的名称,并且应该是模块文件中定义的唯一非静态项:PyMODINIT_FUNC
PyInit_spam(无效)
{
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 而不是?