Chapter 6. Organizing Cython Code
Namespaces are one honking great idea—let’s do more of those!
— T. Peters “The Zen of Python”
Python provides modules and packages to help organize a project. This
allows us to group functions, classes, and variables into logical units, making
a project easier to understand and navigate. Modules and packages also make it
easier to reuse code. In Python, we use the import
statement to access
functions, objects, and classes inside other modules and packages.
Cython also allows us to break up our project into several modules. It fully
supports the import
statement, which has the same meaning as in Python.
This allows us, at runtime, to access Python objects defined in external pure-Python modules or Python-accessible objects defined in other extension modules.
If that were the end of the story, it would not allow two Cython modules to
access each other’s cdef
or cpdef
functions, ctypedef
s, or structs,
and it would not allow C-level access to other extension types.
To address this, Cython provides three file types that help organize the Cython-specific and C-level parts of a project. Until now we have been working with Cython source files with a .pyx extension, known as implementation files. Here we will see how these files work with a new Cython file type called definition files, which have a .pxd extension. We will also look at the third Cython file type, with a .pxi extension; these are called include files.
In addition to the three file types, Cython ...
Get Cython now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.