Сторонние библиотеки Python

Для Python было разработано большое количество библиотек[1]:

Искусственный интеллект

Для Python было разработано много библиотек ИИ, такие как TensorFlow, Scikit-learn, Keras.

Платформенно зависимые библиотеки

Помимо стандартной библиотеки существует множество библиотек, предоставляющих интерфейс ко всем системным вызовам на разных платформах; в частности, на платформе Win32 поддерживаются все вызовы Win32 API, а также COM в объёме не меньшем, чем у Visual Basic или Delphi. Количество прикладных библиотек для Python в самых разных областях без преувеличения огромно (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы и т. д.)[2].

Библиотеки для работы с базами данных

Для Python принята спецификация программного интерфейса к базам данных DB-API 2[3] и разработаны соответствующие этой спецификации пакеты для доступа к различным СУБД: Oracle, MySQL, PostgreSQL, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server и SQLite — sqlite3[4].

Математические библиотеки

Библиотека NumPy для работы с многомерными массивами позволяет иногда достичь производительности научных расчётов, сравнимой со специализированными пакетами. SciPy использует NumPy и предоставляет доступ к обширному спектру математических алгоритмов (матричная алгебра — BLAS уровней 1—3, LAPACK, БПФ…). Numarray[5] специально разработан для операций с большими объёмами научных данных. Pandas также используется для анализа и работы с данными.

Веб-библиотеки

WSGI[6] — интерфейс шлюза с веб-сервером (Python Web Server Gateway Interface).

Для Python написано много ORM (SQLAlchemy, Dejavu, Django), выполнены программные каркасы для разработки веб-приложений (Django, Pyramid, Flask, FastAPI).

Привязки к функциям Python других языков

Python предоставляет простой и удобный программный интерфейс C API для написания собственных модулей на языках Си и C++ и других. Такой инструмент как SWIG позволяет почти автоматически получать привязки для использования C/C++ библиотек в коде на Python. Возможности этого и других инструментов варьируются от автоматической генерации (C/C++/Fortran)-Python интерфейсов по специальным файлам (SWIG, pyste[7], SIP[8], pyfort[9]), до предоставления более удобных API (boost::python[10][11], CXX[12], Pyhrol[13] и др.). Инструмент стандартной библиотеки ctypes позволяет программам Python напрямую обращаться к динамическим библиотекам/DLL, если в них объявлены соответствующие экспортированные функции. Существуют модули, позволяющие встраивать код на С/C++ прямо в исходные файлы Python, создавая расширения «на лету» (pyinline[14], weave[15]).

Другой подход состоит во встраивании интерпретатора Python в приложения. Python легко встраивается в программы на Java, C/C++, OCaml. Взаимодействие Python-приложений с другими системами возможно также с помощью CORBA, XML-RPC, SOAP, COM.

Трансляция кода Python в другие языки

С помощью проекта Cython возможна трансляция программ, написанных на смешанных языках Python и C. Nuitka[16], в код на языке Си с последующей компиляцией в машинный код. Cython и Nuitka используется для ускорения скорости написанных Python-библиотек.

Библиотеки пользовательского графического интерфейса

С Python поставляется библиотека tkinter на основе Tcl/Tk для создания кроссплатформенных программ с графическим интерфейсом[17].

Существуют расширения, позволяющие использовать все основные библиотеки графических интерфейсов — wxPython[18], основанное на библиотеке wxWidgets, PyGObject для GTK[19], PyQt и PySide для Qt и другие. Некоторые из них также предоставляют широкие возможности по работе с базами данных, графикой и сетями, используя все возможности библиотеки, на которой основаны.

Библиотеки для создания игр

Для создания игр и приложений, требующих нестандартного интерфейса, можно использовать библиотеку Pygame. Она также предоставляет обширные средства работы с мультимедиа: с её помощью можно управлять звуком и изображениями, воспроизводить видео. Предоставляемое pygame аппаратное ускорение графики OpenGL имеет более высокоуровневый интерфейс по сравнению с PyOpenGL[20], копирующей семантику С-библиотеки для OpenGL. Есть также PyOgre[21], обеспечивающая привязку к OGRE — высокоуровневой объектно-ориентированной библиотеке 3D-графики. Кроме того, существует библиотека pythonOCC[22], обеспечивающая привязку к среде 3D-моделирования и симуляции OpenCascade[23].

Графические библиотеки

Для работы с растровой графикой используется библиотека Pillow[24].

Для работы с векторной графикой используется PyCairo[25].

Контроль типов и перегрузка функций

Существуют модули, позволяющие контролировать типы параметров функций на этапе исполнения, например, typecheck[26] или method signature checking decorators[27]. Необязательная декларация типов для параметров функции добавлена в Python 3, интерпретатор при этом не проверяет типы, а только добавляет соответствующую информацию к метаданным функции для последующего использования этой информации модулями расширений[28].

Перегрузка функций реализована различными сторонними библиотеками, в том числе PEAK[29][30]. Планы, которые не были приняты, по поддержке перегрузки в Python 3[31] были частично реализованы в библиотеке overloading-lib[32].

Примечания