Интерфейс между Python и Си
CTypes
Вся информация и примеры есть в документиации
Задача: воспользоваться имеющейся разделяемой библиотекой со стандартным Си/Си+ интерфейсом.
- Найти и загрузить библиотеку
- Задать параметры функции
- Вызвать функцию
Задать тип параметров функции (по умолчанию int и все, что кастится из int)
- Работа с указателями, массивам и т. д.
- …
TODO Пример неудавшегося модуля для passwdqc
CFFI
Задачи:
Задача: воспользоваться имеющейся разделяемой библиотекой со стандартным Си/Си+ интерфейсом
Отличие от ctypes — собственный парсер Си
Написать функцию на Си и преобразовать её в модуль для Python.
Пример с компиляцией функции в модуль
Этот же пример в репозитории с примерами
TODO правила оформления
Python API
Задача: программироваать на Си, используя типы данных Python
- Недостаток: скорее всего придётся запустить интерпретатор Python
Задача: полностью написать модуль на Си.
TODO намного подробнее про структуру (взять отсюда)
Большой пример — интерфейс к passwdqc
Cython
Задача: писать всё на специальном ЯП, смеси Python и Си
TODO немного о правилах оформления
Д/З
TODO