PyMODINIT_FUNC与PyModule_C的区别

2024-04-29 00:23:45 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我理解正确

  1. Python 2.X中的PyMODINIT_FUNC已被Python3.X中的PyModule_Create替换
  2. 但是,在Python 3.X中,模块的初始化函数必须将PyObject*返回给模块,即

    PyMODINIT_FUNC
    PyInit_spam(void)
    {
       return PyModule_Create(&spammodule);
    }
    

    而在Python2.X中,这是不必要的

    PyMODINIT_FUNC
    initspam(void)
    {
      (void) Py_InitModule("spam", SpamMethods);
    }
    

所以,我的理智检查问题是:

  • 我的理解正确吗?
  • 为什么要改变?

现在,我只是在尝试一些非常简单的Python的C扩展案例。也许如果我做得更多,答案会很明显,或者如果我试图将Python嵌入到其他东西中。。。。


Tags: 模块函数returncreatespampython3pyinitpyobject