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