class scipy.LowLevelCallable(function, user_data=None, signature=None)[source]#

Low-level callback function.

Some functions in SciPy take as arguments callback functions, which can either be python callables or low-level compiled functions. Using compiled callback functions can improve performance somewhat by avoiding wrapping data in Python objects.

Such low-level functions in SciPy are wrapped in LowLevelCallable objects, which can be constructed from function pointers obtained from ctypes, cffi, Cython, or contained in Python PyCapsule objects.

function{PyCapsule, ctypes function pointer, cffi function pointer}

Low-level callback function.

user_data{PyCapsule, ctypes void pointer, cffi void pointer}

User data to pass on to the callback function.

signaturestr, optional

Signature of the function. If omitted, determined from function, if possible.


The argument function can be one of:

  • PyCapsule, whose name contains the C function signature

  • ctypes function pointer

  • cffi function pointer

The signature of the low-level callback must match one of those expected by the routine it is passed to.

If constructing low-level functions from a PyCapsule, the name of the capsule must be the corresponding signature, in the format:

return_type (arg1_type, arg2_type, ...)

For example:

"void (double)"
"double (double, int *, void *)"

The context of a PyCapsule passed in as function is used as user_data, if an explicit value for user_data was not given.


Callback function given.


User data given.


Signature of the function.


from_cython(module, name[, user_data, signature])

Create a low-level callback function from an exported Cython function.