Если я правильно понимаю,
- PyMODINIT_FUNC в Python 2.X заменен на
PyModule_Create
в Python3.X -
Оба возвращают
PyObject*
, однако в Python 3.X функция инициализации модуля MUST возвращаетPyObject*
в модуль - i.e.PyMODINIT_FUNC PyInit_spam(void) { return PyModule_Create(&spammodule); }
тогда как в Python2.X это не обязательно - то есть
PyMODINIT_FUNC initspam(void) { (void) Py_InitModule("spam", SpamMethods); }
Итак, мои вопросы проверки работоспособности:
- Правильно ли я понимаю?
- Почему было сделано это изменение?
Сейчас я просто экспериментирую с очень простыми случаями C-расширений Python. Возможно, если бы я делал больше, ответ на это был бы очевиден, или, может быть, если бы я пытался внедрить Python во что-то еще...