pxd 文件

除了 .pyx 源文件,Cython 使用 .pxd 文件,像 C 头文件般工作 – 它们包含只供 Cython 模块包括的 Cython 声明 (有时是代码区间)。 pxd 文件被导入进 pyx 模块通过使用 cimport 关键词。

pxd 文件有很多用例:

  1. 它们可用于共享外部 C 声明。

  2. 它们可包含非常适合 C 编译器的内联函数。这种函数应标记 inline ,范例:

    cdef inline int int_min(int a, int b):
        return b if b < a else a
    							
  3. 当伴随相等命名 pyx 文件,它们为 Cython 模块提供 Cython 接口,以便其它 Cython 模块可以使用比 Python 更高效协议与之通信。

在集成范例中,可能将其分解成 pxd 文件像这样:

  1. 添加 cmath.pxd 函数,定义的可用 C 函数来自 C math.h 头文件,像 sin 。那么只需做 from cmath cimport sin in integrate.pyx .

  2. 添加 integrate.pxd 以便其它以 Cython 编写的模块可以定义快速自定义函数以集成。

    cdef class Function:
        cpdef evaluate(self, double x)
    cpdef integrate(Function f, double a,
                    double b, int N)
    							

    注意,若有带属性的 cdef 类,属性必须声明在类声明 pxd 文件 (若有使用),不是 pyx 文件。编译器会告诉你这点。

上一话题

扩展类型 (亦称作 cdef 类)

下一话题

告诫

本页