Стандартное соглашение в C-API Python заключается в том, что
-
функции не крадут ссылки на входные аргументы (объекты)
-
возвращаемые значения и выходные аргументы (объекты) имеют ссылку
Большинство функций в C-API Python следуют этому соглашению. Однако есть некоторые исключения. Я натолкнулся на следующее:
Функции, которые украдут ссылку из входного аргумента
PyModule_AddObject
Функции с возвращаемыми значениями или выходными аргументами, которые занимают ссылку
PyErr_Occurred
PyTuple_GetItem
PyTuple_GETITEM
PyDict_GetItem
PyDict_GetItemString
PyDict_Next
Есть ли полный список таких функций в любом месте? Такой список будет полезной ссылкой при написании модулей расширения Python.