что такое стандартная библиотека python
Стандартная библиотека Python
Богатая стандартная библиотека является одной из привлекательных сторон языка программирования Python. Здесь имеются средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания HTTP-серверов и клиентов, для разбора и создания почтовых сообщений, для работы с XML и т. п. Набор модулей для работы с операционной системой позволяет писать кросс-платформенные приложения. Существуют модули для работы с регулярными выражениями, текстовыми кодировками, мультимедийными форматами, криптографическими протоколами, архивами, сериализации данных, поддержка юнит-тестирования и др.
Содержание
Сервисы периода исполнения
Модуль sys
В этом модуле содержатся функции и константы для взаимодействия с интерпретатором Python. В этом модуле в том числе содержатся следующие переменные:
Модуль contextlib
Пример использования менеджера контекста, при котором открытый файл автоматически закрывается:
В примере выше был использован встроенный в Python менеджер контекста. API менеджера контекста состоит из двух методов:
Модуль contextlib предлагает декоратор для создания контекстного менеджера на базе генератора:
Модуль abc
Типы данных
Модуль collections
Пример, демонстрирующий работу с дэком:
Пример именованного кортежа для точки в трёхмерном пространстве:
Пример, в котором поиск значения по ключу ведётся в заданном порядке в нескольких словарях:
Взаимодействие с ОС
Модуль os
Модуль os.path
Модуль служит для манипуляций с путями к файлам в независимом от платформы виде. Пример иллюстрирует использование некоторых функций модуля:
Обработка текстов
Полезные константы и функции из модуля string
Модуль содержит различные константы, которые можно использовать при обработке текстов, например: ascii_letters (строка, содержащая все буквы из набора ASCII), ascii_lowercase, digits (строка с цифрами от 0 до 9), letters (буквы, зависят от установки локали) и т. п.
Поддержка регулярных выражений: модуль re
Работа с байтовыми структурами в модуле struct
Модуль struct служит для конвертирования данных из строк байтов и типами данных языка Python и может применяться при работе с форматами бинарных файлов и коммуникационными протоколами. Функции pack и unpack позволяют «упаковывать» и «распаковывать» данные на основе строки формата, состоящей их кодов форматирования, например:
Порядок байтов многобайтных данных можно задать в строке форматирования, например:
Форматы данных
Работа с файловыми архивами
Примеры для Python 2.7 и 3.2
В следующем примере в файле archive.zip будет заархивирован файл file.txt, содержащий текст «text in the file». Это ещё один пример использования менеджера контекста.
Чтение архива происходит аналогично. В следующем примере будут напечатаны имена файлов, содержащиеся в архиве:
Конфигурационные файлы
Криптографические модули
Использовать Crypto API — совместимые библиотеки достаточно просто:
Сетевые протоколы
В стандартной библиотеке присутствуют модули для работы с сетевыми протоколами HTTP (и клиент, и простейший сервер), FTP, XML-RPC, SMTP, IMAP, NNTP и другие.
Простые базы данных
Работа с объектом базы данных происходит аналогично работе со словарём Python (на примере dumbdbm ) [15] :
Для долговременного хранения объектов Python можно использовать модуль shelve (рус. полка ).
Поддержка разработки программного обеспечения
Многопоточные вычисления
Графический интерфейс
Интроспекция
Платформно-зависимые модули
Примечания
Ссылки
Литература
Полезное
Смотреть что такое «Стандартная библиотека Python» в других словарях:
Стандартная библиотека — языка программирования набор модулей, классов, объектов, констант, глобальных переменных, шаблонов, макросов, функций и процедур, доступных для вызова из любой программы, написанной на этом языке и присутствующих во всех реализациях языка.… … Википедия
Стандартная библиотека языка Си — Стандартная библиотека языка программирования С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stdbool.h stddef.h … Википедия
Python — У этого термина существуют и другие значения, см. Python (значения). Python Класс языка: му … Википедия
Пайтон — Python Класс языка: функциональный, объектно ориентированный, императивный, аспектно ориентированный Тип исполнения: интерпретация байт кода, компиляция в MSIL, компиляция в байт код Java Появился в: 1990 г … Википедия
Ruby — Класс языка: мультипарадигмальный: динамический, объектно ориентиров … Википедия
C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия
Руби IDE — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия
Рубин (язык программирования) — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия
Язык программирования Рубин — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия
Haskell — Класс языка: функциональный, ленивый, модульный Тип исполнения: компилируемый, интерпретируемый Появился в: 1990 … Википедия
Учимся читать код, изучая стандартную библиотеку Python
Итак, вы уже продвинутый новичок — вы изучили основы Python и способны решать реальные задачи.
Вы уже отходите от просмотра туториалов и чтения блогов; наверно, уже ощущаете, что в них излагаются одномерные решения простых придуманных задач; вероятно, вместо решения этой конкретной задачи вы хотите совершенствоваться в решении задач в целом.
Наверно, вы слышали, что нужно нарабатывать понимание чтением и написанием больших объёмов кода. Это правда.
Но какой же код нужно читать?
«Просто читай то, что нравится». А если вы не знаете, что вам нравится? А если вам не нравится что-то правильное?
Или хуже того — если вам нравится что-то неправильное и из-за этого у вас выработаются вредные привычки?
В конечном итоге, для этого ведь необходимо понимание… Но именно его мы и стремимся обрести.
«На GitHub куча проектов — выберите понравившийся и изучайте, как его реализовали разработчики». Однако самые успешные проекты довольно объёмны — с чего начинать?
И даже если вы знаете, с чего начинать, не всегда очевидно, как разработчики пришли к своему решению.
Да, вы видите код своими глазами, но он не говорит вам о том, почему разработчики написали его так, чего они не делали и как они рассуждали о проекте в целом.
Другими словами, из самого кода неочевидно, какой была философия его проектирования, и какие варианты решений разработчики рассматривали, прежде чем остановиться на конкретной реализации.
В этой статье мы рассмотрим некоторые модули стандартной библиотеки Python.
Примечание о стандартной библиотеке
В целом, стандартная библиотека Python неидеальна для изучения «хорошего» стиля.
Хотя все её модули полезны, они не особо однородны:
Мы рассмотрим как раз некоторые из них.
Если игнорировать стиль, у стандартной библиотеки можно многому научиться, ведь она решает реальные задачи множества разных разработчиков.
Как читать модули
Приблизительно в таком порядке:
statistics
Он был внедрён в PEP 450. Если вы незнакомы с этим предложением, то это очень любопытное чтиво:
«Большая часть документации предназначена для читателей, понимающих базовые концепции, но которые могут не знать (например), какую дисперсию им стоит использовать [. ] Однако документация избегает скучных математических подробностей».
Код относительно прост, а когда это не так, то в нём есть комментарии и ссылки на подробные объяснения или статьи. Это может быть полезным, если вы изучаете все эти концепции и вам проще читать код, чем математическиe условные обозначения.
pathlib
Модуль был внедрён в PEP 428. Большинство примеров используется для иллюстрации лежащей в основе модуля философии, а код оставлен в качестве спецификации.
Код хорошо читается по следующим причинам:
dataclasses
Кроме того, это отличный пример метапрограммирования; этот аспект подробно рассматривается в докладке Реймонда Хеттингера Dataclasses: The code generator to end all code generators. [Слайды с доклада в HTML и PDF.] Если у вас возникли проблемы с пониманием кода, то сначала посмотрите доклад; для меня оказалось довольно полезным объяснение генерируемого кода.
Бонус: graphlib
Модуль graphlib был добавлен в Python 3.9, и на данный момент содержит только одну вещь: реализацию алгоритма топологической сортировки (вот описание того, что это такое, и почему он полезен).
Он появился не через PEP; однако у него есть issue со множеством комментариев от разных разработчиков ядра, в том числе Реймонда Хеттингера и Тима Питерса (известного своим «Дзен языка Python»).
Так как это, по сути, решённая задача, в обсуждениях рассматривается API: куда его вставлять, кто должен его вызывать, как представлять входные и выходные данные, как одновременно обеспечить простоту использования и гибкость.
В обсуждении пытаются примирить два различных способа использования модуля:
По сравнению с обсуждением issue, сам код очень мал — меньше 250 строк, и в основном состоит из комментариев и документации.
На правах рекламы
Серверы для разработчиков и не только! Дешёвые VDS на базе новейшего «железа» для размещения проектов любой сложности, от корпоративных сетей и игровых проектов до лендингов и VPN.
Стандартная библиотека Python3.
Содержание справочника по модулям, поставляемым с интерпретатором Python3.
Представленным здесь модулям, какая либо дополнительная установка не требуется.
Модуль string в Python, текстовые константы и шаблоны.
Многие функции, ранее реализованные в модуле string, были перенесены в методы объектов str. Модуль string сохраняет несколько полезных констант и классов для работы с объектами str.
Модуль textwrap в Python, форматирование абзацев.
Модуль textwrap может использоваться для форматирования текста в ситуациях, когда требуется красивая печать. Он предлагает программную функциональность, аналогичную функциям заполнения абзацев, которые можно найти во многих текстовых редакторах и т
Модуль unicodedata в Python, база данных Unicode.
Этот модуль обеспечивает доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode.
Модуль readline в Python, автодополнение табуляцией.
Модуль readline может быть использован для улучшения интерактивных программ командной строки, чтобы упростить их использование. Он в основном используется для обеспечения завершения текста в командной строке или «завершение табуляцией».
Модуль difflib в Python, сравнение текста.
Модуль difflib содержит классы и функции для сравнения последовательностей. Он может быть использован, для сравнения текста и включает в себя функции, которые создают отчеты с использованием нескольких распространенных форматов, вк
Модуль re в Python, функции регулярных выражений.
Модуль Python re предоставляет операции сопоставления регулярных выражений, аналогичные тем, которые встречаются в Perl. Большинство операций с регулярными выражениями доступны как функции и методы уровня модуля для скомпилированных регулярных выражений.
Модуль codecs в Python, реестр кодеков.
Модуль codecs определяет базовые классы для стандартных кодеков Python (кодеров и декодеров) и предоставляет доступ к внутреннему реестру кодеков Python, который управляет процессом поиска кодека и обработки ошибок.
Модуль io, операции ввода/вывода в Python.
Модуль io предоставляет основные средства Python для работы с различными типами ввода-вывода. Независимо от своей категории каждый конкретный объект потока также будет иметь различные возможности: он может быть доступен только для чтения, только для записи или для чтения и записи.
Модуль sys, параметры конфигурации в Python.
Модуль sys предоставляет переменные и функции, которые позволяют менять конфигурацию интерпретатора во время выполнения, а так же взаимодействовать с операционной системой за пределами выполняемой программы.
Модуль os в Python, доступ к функциям ОС.
Модуль os обеспечивает портативный способ использования функциональных возможностей, зависящих от операционной системы.
Модуль stat в Python, извлечение информации из stat_result.
Модуль stat определяет константы и функции для интерпретации результатов работы функций os.stat() и os.lstat().
Модуль pathlib в Python, операции с путями ОС.
Модуль pathlib по сути объединяет в себе часто используемые функции двух стандартных модулей os и os.path, а так же стандартную функцию open(). Модуль pathlib предлагает классы, представляющие пути файловой системы с семантикой, подходящей для различных операционных систем.
Модуль os.path в Python, операции с путями ОС.
Модуль os.path реализует некоторые полезные функции для манипулирования путями файловой системы. Параметры пути могут быть переданы в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде (Unicode) символьных строк.
Модуль array в Python, массивы числовых значений.
Модуль array определяет тип объекта, который может компактно представлять массив базовых значений: символы, целые числа, числа с плавающей запятой.
Модуль struct, структуры C в Python.
Модуль `struct` включает функции для преобразования между строками байтов и родными типами данных Python, такими как числа и строки. Модуль использует формат строки в качестве компактного описания структур языка `C` и предполагаемого преобразования в/из значений Python.
Стандартная библиотека Python¶
Хотя Справочник по языку Python описывает точный синтаксис и семантику языка Python, в этом справочном руководстве описывается стандартная библиотека, которая распространяется вместе с Python. В нем также описаны некоторые необязательные компоненты, которые обычно включаются в Python дистрибутивы.
Стандартная библиотека Python очень обширна и предлагает широкий спектр возможностей, о чем свидетельствует подробное содержание, приведенное ниже. Библиотека содержит встроенные модули (написанные на языке C), обеспечивающие доступ к таким функциональным возможностям системы, как файловый ввод-вывод, который в противном случае был бы недоступен для Python программистов, а также модули, написанные на языке Python, обеспечивающие стандартные решения многих проблем, возникающих при повседневном программировании. Некоторые из этих модулей специально разработаны для поощрения и повышения переносимости Python программ путем абстракции особенностей платформы в виде нейтрального к платформе API.
Установщики Python для платформы Windows обычно включают всю стандартную библиотеку и часто также включают множество дополнительных компонентов. Для Unix-подобных операционных систем Python обычно предоставляется в виде набора пакетов, поэтому может потребоваться использование пакетных инструментов, поставляемые с операционной системой, для получения некоторых или всех необязательных компонентов.
Помимо стандартной библиотеки, существует растущая коллекция из нескольких тысяч компонентов (от отдельных программ и модулей до пакетов и фреймворков разработки приложений), доступных из Пакетного Индекса Python.
Стандартная библиотека Python3.
Содержание справочника по модулям, поставляемым с интерпретатором Python3.
Представленным здесь модулям, какая либо дополнительная установка не требуется.
Модуль collections в Python, контейнерные типы данных.
Модуль collections реализует специализированные типы данных контейнеров, предоставляя альтернативы встроенным контейнерам Python общего назначения dict, list, set и tuple.
Модуль functools в Python, инструменты расширения функций.
Модуль functools предоставляет инструменты для адаптации или расширения функций и других вызываемых объектов, не переписывая их полностью.
Модуль getpass в Python, безопасный ввод пароля.
Модуль getpass предоставляет переносимый способ безопасной обработки запроса у пользователя значения пароля.
Модуль heapq, кучи в Python.
Модуль heapq обеспечивает реализацию алгоритма очереди кучи, также известного как алгоритм очереди приоритетов и в несколько раз облегчает написание программ, использующих такую структуру данных как куча.
Пакет importlib в Python.
Назначение пакета `importlib` заключается в том, чтобы обеспечить реализацию оператора импорта `import` и следовательно, расширение функции `__import__()` в исходном коде Python.
Модуль itertools в Python, готовые итераторы.
Модуль itertools стандартизирует основной набор быстрых и эффективных по памяти инструментов, которые полезны сами по себе или в сочетании. Вместе они образуют «алгебру итераторов», позволяющую быстро и эффективно создавать специализированные инструменты в чистом Python.
Модуль json в Python, работа с JSON форматом.
Модуль csv в Python, работа с CSV форматом.
Модуль csv реализует классы для чтения и записи табличных данных в формате CSV. Программисты также могут описывать форматы CSV, понятные другим приложениям или определять свои собственные специализированные форматы CSV.
Модуль glob в Python, поиск файлов по шаблонам.
Модуль glob находит все пути, соответствующие указанному шаблону, в соответствии с правилами, используемыми оболочкой Unix. Результаты возвращаются в произвольном порядке.
Модуль fnmatch в Python, шаблонизатор имен файлов.
Модуль fnmatch обеспечивает поддержку подстановочных знаков в стиле оболочки Unix (подстановочные wildcard-выражения).
Модуль shutil в Python, операций над файлами/каталогами.
Модуль shutil предлагает ряд высокоуровневых операций над файлами и коллекциями файлов. В частности, предусмотрены функции, которые поддерживают копирование, удаление и архивирования файлов.
Модуль venv в Python3, создание виртуальных сред.
Модуль venv обеспечивает поддержку создания облегченных «виртуальных сред». Каждая виртуальная среда имеет свой собственный двоичный файл Python и может иметь собственный независимый набор установленных пакетов Python в своих каталогах.
Модуль ensurepip в Python.
Пакет `ensurepip` обеспечивает поддержку начальной загрузки установщика `pip` в виртуальную среду или существующую установку Python.
Модуль zipapp в Python, исполняемые zip-архивы.
Модуль zipapp предоставляет инструменты для управления созданием zip-файлов, содержащих код Python, которые могут выполняться непосредственно интерпретатором Python.
Модуль decimal в Python, десятичная арифметика.
Модуль десятичной дроби decimal обеспечивает поддержку быстрой правильно округленной десятичной арифметики с плавающей запятой. Он предлагает несколько преимуществ по сравнению с типом данных float