Я хочу зателефонувати до бібліотеки С із програми Python. Я не хочу обробляти весь API, лише функції та типи даних, які відповідають моєму випадку. Як я бачу, у мене є три варіанти:
- Створіть фактичний модуль розширення в C. Можливо, зайвий рівень, і я також хотів би уникнути накладних витрат на навчання розширення.
- Використовуйте Cython, щоб відкрити відповідні частини з бібліотеки С Python.
- Робіть все в Python, використовуючи
ctypes
зв'язок із зовнішньою бібліотекою.
Я не впевнений, 2) чи 3) - кращий вибір. Перевага 3) полягає в тому, що ctypes
це частина стандартної бібліотеки, і отриманий код був би чистим Python - хоча я не впевнений, наскільки ця перевага насправді велика.
Чи є більше переваг / недоліків у будь-якого вибору? Який підхід ви рекомендуєте?
Редагувати: Дякую за всі ваші відповіді, вони забезпечують хороший ресурс для всіх, хто хоче зробити щось подібне. Рішення, звичайно, все ж має бути прийняте для єдиного випадку - немає жодної відповіді "Це правильна річ". Для мого власного випадку я, мабуть, пітиму з ctypes, але я також з нетерпінням чекаю спробувати Cython в якомусь іншому проекті.
Оскільки немає єдиної правдивої відповіді, прийняття однієї є дещо довільною; Я вибрав відповідь FogleBird, оскільки вона дає хороше уявлення про типи, і на даний момент це також відповідь з найбільш високим голосом. Однак я пропоную прочитати всі відповіді, щоб отримати хороший огляд.
Знову дякую.