Ответ 1
Существует несколько способов вызова кода, написанного на языке C на Python.
Во-первых, в стандартной библиотеке есть модуль ctypes. Он позволяет загружать библиотеку динамической компоновки (DLL в Windows, разделяемые библиотеки .so
в Linux) и вызывать функции из этих библиотек непосредственно из Python. Такие библиотеки обычно записываются в C.
Во-вторых, в случае CPython существует API Python/C. Его можно использовать двумя основными способами:
Библиотека динамической компоновки может быть записана на языке C таким образом, что CPython будет рассматривать ее как модуль (вы сможете импортировать ее в свои программы Python). API Python/C позволяет библиотеке определять функции, написанные на C, но все же вызываемые из Python. API очень эффективен и предоставляет функции для управления всеми типами данных Python и доступа к внутренним интерфейсам интерпретатора.
Второй способ использования C API - встраивать Python в программу, написанную на C. Программа C затем может создавать встроенные модули, написанные на C, и выставлять C-функции, как в библиотеке динамической компоновки подход. API также позволяет программе выполнять скрипты, которые затем могут импортировать и использовать встроенные модули. Это можно использовать для создания подключаемой системы на основе Python.
"Привязки" реализованы либо как чистая библиотека Python с использованием ctypes, либо как библиотека динамической компоновки с использованием API Python/C. Второй вариант иногда используется с такими инструментами, как SWIG, которые облегчают задачу, заботясь о генерации кода котельной плиты или Boost.Python, который предоставляет API С++ поверх API Python/C, что упрощает взаимодействие с кодом на С++.
Далее читайте: Интерфейс внешних функций