Date Время чтения ~1 минут Категория Hardcore Python Tags cffi

Самый популярный Python это CPython. Он настолько популярен, что когда говорят Python имеют ввиду именно каноническую реализацию - CPython.

CPython, как можно понять из названия, имеет какое-то отношение к языку C. Из Python вы можете с помощью ctypes дергать С-шные функции.
Однако, этот механизм несколько медленный и не всегда удобный - бывает надо просто дернуть один кусок C-кода. Или надо только часть от h-файла, или только кусок структуры. Вот в этом случае помогает - cffi.

Пример кода с использованием этой библиотеки:

>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.cdef("""
.......int printf(const char *format, ...);   // copy-pasted from the man page
.......""")
>>> C = ffi.dlopen(None)                     # loads the entire C namespace
>>> arg = ffi.new("char[]", "world")         # equivalent to C code: char arg[] = "world";
>>> C.printf("hi there, %s.\n", arg)         # call printf
hi there, world.
17                                           # this is the return value
>>>

Эти многоточия в cdef это реальный код, который надо писать.



Комментарии