pxd 文件

原文: http://docs.cython.org/en/latest/src/tutorial/pxd_files.html

除了.pyx源文件之外,Cython 还使用.pxd文件,它们的工作方式类似于 C 头文件 - 它们包含 Cython 声明(有时是代码部分),仅供 Cython 模块使用。使用cimport关键字将pxd文件导入pyx模块。

pxd文件有很多用例:

  1. 它们可用于共享外部 C 声明。
  1. 它们可以包含非常适合 C 编译器内联的函数。这些功能应标记为inline,例如:
  1. ```py
  2. cdef inline int int_min(int a, int b):
  3. return b if b < a else a
  4. ```
  1. 当附带同名的pyx文件时,它们为 Cython 模块提供了一个 Cython 接口,以便其他 Cython 模块可以使用比 Python 更高效的协议与之通信。

在我们的集成示例中,我们可能会将其分解为pxd文件,如下所示:

  1. 添加cmath.pxd功能,定义 C math.h头文件中可用的 C 功能,如sin。然后人们只需在integrate.pyx中做from cmath cimport sin
  1. 添加integrate.pxd,以便用 Cython 编写的其他模块可以定义要集成的快速自定义函数。
  1. ```py
  2. cdef class Function:
  3. cpdef evaluate(self, double x)
  4. cpdef integrate(Function f, double a,
  5. double b, int N)
  6. ```
  7. 请注意,如果您的 cdef 类具有属性,则必须在类声明`pxd`文件(如果使用)中声明属性,而不是`pyx`文件。编译器会告诉你这个。