Pyrex является языком для написания Python модулей расширения.
Pyrex является языком специально разработан для написания модулей расширения Python. Она разработана, чтобы преодолеть разрыв между красивым, высоким уровнем, легкий в использовании мир Python и грязный, низкого уровня мир С
Вы можете быть удивлены, почему кто-то хочет специальный язык для этого. Python действительно легко расширить, используя C или С ++, не так ли? Почему бы просто не написать свои модули расширения в одном из этих языков?
Ну, если вы когда-либо написал модуль расширения для Python, вы будете знать, что не все так просто, как все, что. Прежде всего, есть справедливый бит шаблонного кода, чтобы написать, прежде чем вы даже можете получить от земли. Тогда вы столкнулись с проблемой конвертации между типами данных Python и C. Для основных типов, таких как числа и строки, это не слишком плохо, но ничего более сложной и вы в выборе объектов Python помимо используя / C API вызовы Python, который требует, чтобы вы тщательно о сохранении количество ссылок, проверка на наличие ошибок на каждом шагу и очистки должным образом, если что-то пойдет не так. Любые ошибки и у вас есть неприятный сбой, что очень трудно отладить.
Различные инструменты были разработаны, чтобы облегчить некоторые из бремя получения кода расширения, из которых, возможно, SWIG является самым известным. SWIG принимает файл определения, состоящий из смеси C кода и специализированных деклараций, и производит модуль расширения. Это записывает все макет для вас, и во многих случаях вы можете использовать его, не зная о API Python / C. Но вы должны использовать вызовы API, если любая значительная перестройка данных требуется между Python и C,
Более того, SWIG не дает вам никакой помощи, если вы хотите создать новый, построенный в тип Python. Он будет генерировать чистые-Python классы, обертывание (в несколько небезопасного) указатели на структуры данных C, а создание истинных типов расширения вне его сферы.
Еще одним заметным попытка сделать его проще расширить Python является PyInline, вдохновленный аналогичный объект для Perl. PyInline позволяет встраивать фрагменты кода C в разгар файла Python, и автоматически извлекает их и собирает их в расширение. Но это только преобразует основные типы автоматически, и как с SWIG, это не затрагивает создание новых типов Python.
Pyrex стремится идти гораздо дальше, чем любой из этих предыдущих инструментов обеспечивает. Pyrex дело с основными типами так легко, как SWIG, но также позволяет писать код для преобразования между произвольными структурами данных Python и произвольных структур данных C, в простой и естественный путь, ничего не зная о / C API Python. Это не так - вообще ничего! Также вы должны беспокоиться о подсчете ссылок или проверки ошибок - это все заботятся автоматически, за кулисами, как это в коде Python интерпретировать. И более того, Pyrex позволяет определить новые встроенные типы Python так легко, как вы можете определить новые классы в Python.
Что нового в этой версии:
· Крошечные Исправление для устранения проблемы вкладка / пространство в расширении Distutils.
Детали программы:
Версия: 0.9.4.1
Дата загрузки: 3 Jun 15
Тип распространения: Бесплатная
Популярность: 113
Комментарии не найдены