如何从 Cython 调用 C-API 函数,例如 PyUnicode_READ_CHAR?

How to call a C-API function such as PyUnicode_READ_CHAR from Cython?

我正在使用 Cython 来加速对字符串(unicode,CPython 3.6)进行操作的函数。

如何从我的 Cython .pyx 代码中调用 CPython 的 Py_UCS4 val = PyUnicode_READ_CHAR(my_string, my_index)?我无法找出从 Cython 导入和使用 C-API 的正确方法。

谢谢!

Cython 不会将整个 CPython 的 C-API 包装在 cpython.*-headers 中,只有最重要的部分。如果一个函数没有被包装,它总是可以即时完成,例如:

#instead of from cpython.unicode cimport PyUnicode_READ_CHAR
cdef extern from *:
    Py_UCS4 PyUnicode_READ_CHAR(object o, Py_ssize_t index)

之后该函数就可以在Cython中使用了