Я не очень знаком с внутренностями CPython с точки зрения C (хотя я углубился в них из-за боковых загрузок Python!), Но я понимаю основные принципы.
Документация 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
?