CFFI
The CFFI
(C Foreign Function Interface) library offers options very similar to ctypes
, but it’s a bit more direct. Unlike the ctypes
library, a C compiler is really a necessity for CFFI. With it comes the opportunity to directly call your C compiler from Python in an easy way. We illustrate by calling printf
:
>>> import cffi
>>> ffi = cffi.FFI()
>>> ffi.cdef('int printf(const char* format, ...);')
>>> libc = ffi.dlopen(None)
>>> arg = ffi.new('char[]', b'Printing using CFFI\n')
>>> libc.printf(arg)
20
Printing using CFFI
Okay… so that looks a bit weird, right? We had to define how the printf
function looks and specify the arguments to printf
with a valid C function header. Additionally, we had to specify the C-string as a char[]
array manually. With ctypes
, that would not be required, but there are several advantages...