Рубрики
Без рубрики

Вне стандартной библиотеки

Автор оригинала: Doug Hellmann.

Хотя стандартная библиотека Python обширна, существует также надежная экосистема модулей, предоставляемых сторонними разработчиками и доступных в указателе пакетов Python . В этом приложении описаны некоторые из этих модулей и ситуации, когда вы

Текст

Строковый модуль включает очень простой инструмент для создания шаблонов. Многие веб-фреймворки включают более мощные инструменты для создания шаблонов, но Jinja2 и Mako – популярные автономные альтернативы. Оба поддерживают циклические и условные управляющие структуры, а также другие функции для объединения данных с шаблоном для создания текстового вывода.

Модуль re включает функции поиска и анализа текста с использованием формально описанных шаблонов, называемых регулярными выражениями. Однако это не единственный способ разобрать текст.

Пакет PLY поддерживает создание синтаксических анализаторов в стиле инструментов GNU lexx и yacc, обычно используемых для создания компиляторов языков. Предоставляя входные данные, описывающие действительные токены, грамматику и действия, которые необходимо предпринять при обнаружении каждого из них, можно создавать полнофункциональные компиляторы и интерпретаторы, а также более простые анализаторы данных.

PyParsing – еще один инструмент для создания синтаксических анализаторов. Входные данные – это экземпляры классов, которые можно объединить в цепочку с помощью операторов и вызовов методов для построения грамматики.

Наконец, NLTK – это пакет для обработки текста на естественном языке – человеческих языках вместо компьютерных языков. Он поддерживает анализ предложений на части речи, поиск корневой формы слов и базовую семантическую обработку.

Алгоритмы

Модуль functools включает некоторые инструменты для создания декораторов, функций, которые обертывают другие функции, чтобы изменить их поведение. Пакет wrapt идет дальше, чем functools.wrap () , чтобы гарантировать, что декоратор построен правильно и работает для все крайние случаи.

Даты и время

Модули time и datetime предоставляют функции и классы для управления значениями времени и даты. Оба включают функции для синтаксического анализа строк, чтобы превратить их во внутренние представления. Пакет dateutil включает более гибкий синтаксический анализатор, который упрощает создание надежных приложений, более терпимых к различным форматам ввода.

Модуль datetime включает класс с учетом часового пояса для представления определенного времени в определенный день. Однако он не включает полную базу данных часовых поясов. Пакет pytz действительно предоставляет такую базу данных. Он распространяется отдельно от стандартной библиотеки, поскольку поддерживается другими авторами и часто обновляется, когда значения часового пояса и летнего времени меняются политическими учреждениями, которые их контролируют.

Математика

Математический модуль содержит быстрые реализации сложных математических функций. NumPy расширяет набор поддерживаемых функций, включая функции линейной алгебры и преобразования Фурье. Он также включает быструю реализацию многомерного массива, улучшенную по сравнению с версией в массиве.

Сохранение данных и обмен

Примеры в разделе sqlite3 запускают операторы SQL напрямую и работают с низкоуровневыми структурами данных. Для больших приложений часто желательно отображать классы в таблицы в базе данных с помощью объектно-реляционного сопоставителя или ORM. Библиотека ORM sqlalchemy предоставляет API-интерфейсы для связывания классов с таблицами, построения запросов и подключения к различным типам реляционных баз данных производственного уровня.

Пакет lxml включает библиотеки libxml2 и libxslt для создания альтернативы синтаксическому анализатору XML в xml.etree.ElementTree. Разработчикам, знакомым с использованием этих библиотек на других языках, может оказаться, что lxml проще внедрить в Python.

Пакет defusedxml содержит исправления для “ Billion Laughs “и других уязвимостей, связанных с отказом в обслуживании, связанных с расширением сущностей, в библиотеках Python XML и делает работу с ненадежным XML более безопасным, чем использование только стандартной библиотеки.

Криптография

Команда разработчиков пакета cryptography заявляет: «Наша цель – сделать его вашей« стандартной криптографической библиотекой »». Пакет криптографии предоставляет высокоуровневые API, чтобы упростить добавление криптографических функций к приложениям, и пакет активно поддерживается с частыми выпусками для устранения уязвимостей в базовых библиотеках, таких как OpenSSL.

Параллелизм с процессами, потоками и сопрограммами

Цикл событий, встроенный в asyncio, является эталонной реализацией, основанной на абстрактном API, определенном модулем. Можно заменить цикл обработки событий библиотекой, такой как uvloop , которая обеспечивает лучшую производительность в обмен на добавление дополнительных зависимостей приложения.

Пакет curio – это еще один пакет параллелизма, похожий на asyncio, но с меньшим API, который обрабатывает все как сопрограмму и не поддерживает обратные вызовы в способ asyncio.

Библиотека Twisted обеспечивает расширяемую структуру для программирования Python с особым упором на сетевое программирование на основе событий и многопротокольную интеграцию. Он зрелый, надежный и хорошо документированный.

Интернет

Пакет requests – очень популярная замена urllib.request. Он предоставляет согласованный API для работы с удаленными ресурсами, доступными через HTTP, включает надежную поддержку SSL и может использовать пул соединений для повышения производительности в многопоточных приложениях. Он также предоставляет функции, которые делают его хорошо подходящим для доступа к REST API, например встроенный анализ JSON.

Модуль Python html включает базовый синтаксический анализатор для правильно сформированных данных HTML. Однако данные реального мира редко бывают хорошо структурированными, что затрудняет их анализ. BeautifulSoup и PyQuery библиотеки – это альтернативы html , более надежные перед лицом беспорядочных данных. Оба определяют API-интерфейсы для анализа, изменения и построения HTML.

Встроенный пакет http.server включает базовые классы для создания простых HTTP-серверов с нуля. Тем не менее, он не предлагает большой поддержки, кроме создания веб-приложений. Пакеты Django и Pyramid – два популярных веб-приложения. фреймворки, которые обеспечивают дополнительную поддержку расширенных функций, таких как синтаксический анализ запросов, маршрутизация URL-адресов и обработка файлов cookie.

Многие существующие библиотеки не работают с asyncio, потому что они не интегрируются с циклом событий. Новый набор библиотек, таких как aiohttp , создается для заполнения этого пробела как часть aio-libs .

Электронное письмо

API для imaplib является относительно низкоуровневым и требует от вызывающей стороны понимания протокола IMAP для создания запросов и анализа результатов. Пакет imapclient предоставляет API более высокого уровня, с которым проще работать для создания приложений, которым необходимо управлять почтовыми ящиками IMAP.

Строительные блоки приложений

Два стандартных библиотечных модуля для создания интерфейсов командной строки, argparse и getopt, отделяют определение аргументов командной строки от их синтаксического анализа и обработки значений. В качестве альтернативы, щелкните («Комплект для создания интерфейса командной строки»), он определяет функции обработки команд и затем связывает с этими командами определения параметров и подсказок. с помощью декораторов.

cliff («Структура формирования интерфейса командной строки») предоставляет набор базовых классов для определения команд и систему плагинов для расширения приложения с множеством подкоманд, которые могут быть распределены в отдельных пакетах. Он использует argparse для создания синтаксического анализатора текста справки и аргументов, поэтому обработка командной строки знакома.

Пакет docopt меняет типичный поток, предлагая разработчику написать текст справки для программы, который затем он анализирует, чтобы понять подкоманды, допустимые комбинации опций и подкоманд.

Для интерактивных программ на базе терминала prompt_toolkit включает расширенные функции, такие как поддержка цвета, подсветка синтаксиса, редактирование ввода и т. Д. поддержка мыши и история поиска. Его можно использовать для создания командно-ориентированных программ с циклом подсказок, таких как модуль cmd, или полноэкранных приложений, таких как текстовые редакторы.

Хотя файлы INI, такие как используемые configparser, продолжают оставаться популярными для конфигурации приложений, формат файлов YAML также очень популярен. YAML предоставляет многие функции структуры данных JSON в формате, который легче читать людям. Библиотека PyYAML предоставляет доступ к синтаксическому анализатору и сериализатору YAML.

Инструменты разработчика

Стандартный библиотечный модуль venv является новым в Python 3. Для аналогичной изоляции приложений в Python 2 и 3 используйте virtualenv .

Пакет fixtures предоставляет несколько классов управления тестовыми ресурсами, специально предназначенных для работы с методом addCleanup () . тестовых случаев из модуля unittest. Предоставленные классы фикстур могут управлять регистраторами, переменными среды, временными файлами и т. Д. Согласованным и безопасным способом, который гарантирует, что каждый тестовый пример полностью изолирован от других в наборе.

Модуль distutils в стандартной библиотеке для упаковки модулей Python для распространения и повторного использования считается устаревшим. Замена, setuptools , упакована отдельно от стандартной библиотеки, чтобы упростить частую доставку новых версий. API для setuptools включает инструменты для создания списка файлов для включения в пакет. Существуют расширения для автоматического создания списка из набора файлов, управляемых системой контроля версий. Например, используя setuptools-git с источником в git , по умолчанию все отслеживаемые файлы будут включены в пакет. После создания пакета приложение twine загрузит его в индекс пакета для совместного использования с другими разработчиками.

Такие инструменты, как tabnanny, хороши для поиска распространенных ошибок форматирования в коде Python. Центр контроля качества кода Python поддерживает широкий спектр более продвинутых инструментов статического анализа , включая инструменты которые обеспечивают соблюдение правил стиля, обнаруживают распространенные ошибки программирования и даже помогают избежать чрезмерной сложности.

Смотрите также

  • Индекс пакетов Python или PyPI – сайт для поиска и загрузки модулей расширения, распространяемых отдельно от среды выполнения Python.