Python/C API 有许多相关的函数,它们执行类似的操作,其中一个通常用于一般用途,而另一个在特定情况下更有效或更方便。
例如PyDict_SetItem
和PyDict_SetItemString
是相同的,但后者专门用于 C 字符串作为键。对于PyList_SetItem
and PyList_SET_ITEM
,第二个没有错误检查,并且不会减少现有项目(在此处解释)。
PyInt_FromLong
但是,像always那样进行特殊转换的原因是Py_BuildValue
什么?两者都返回对 Python 对象的新引用,并且似乎做同样的事情。同样的问题适用于 , 等函数PyInt_FromSsize_t
(PyTuple_Pack
当然,所有这些都与Py_BuildValue
适当的格式字符串进行比较)。
什么时候应该使用其中一种?