import cffi ffi = cffi.FFI() ffi.cdef("""int my_algo(int); extern "Python" int f(int);""") ffi.set_source("_extern_python_cffi", """ static int f(int); static int my_algo(int n) { int i, sum = 0; for (i = 0; i < n; i++) sum += f(i); return sum; } """) ffi.compile() from _extern_python_cffi import ffi, lib @ffi.def_extern() def f(n): return n * n assert lib.my_algo(10) == 0+1+4+9+16+25+36+49+64+81