Navigation

In addition to the .pyx source files, Cython uses .pxd files
which work like C header files – they contain Cython declarations
(and sometimes code sections) which are only meant for inclusion by
Cython modules. A pxd file is imported into a pyx module by
using the cimport keyword.

pxd files have many use-cases:

They can be used for sharing external C declarations.

They can contain functions which are well suited for inlining by
the C compiler. Such functions should be marked inline, example:

cdefinlineintint_min(inta,intb):returnbifb<aelsea

When accompanying an equally named pyx file, they
provide a Cython interface to the Cython module so that other
Cython modules can communicate with it using a more efficient
protocol than the Python one.

In our integration example, we might break it up into pxd files like this:

Add a cmath.pxd function which defines the C functions available from
the C math.h header file, like sin. Then one would simply do
fromcmathcimportsin in integrate.pyx.

Add a integrate.pxd so that other modules written in Cython
can define fast custom functions to integrate.