Вступление

«Библиотека Python» содержит несколько различных типов компонентов.

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

Библиотека также содержит встроенные функции и исключения - объекты, которые могут использоваться во всем коде Python без использования инструкции import. Некоторые из них определены в основном языке, но многие из них не являются существенными для основной семантики и описаны только здесь.

Однако основная часть библиотеки состоит из набора модулей. Существует множество способов анализа этой коллекции. Некоторые модули написаны на C и встроены в интерпретатор Python; другие написаны на Python и импортированы в исходном виде. Некоторые модули предоставляют интерфейсы, в высшей степени специфичные для Python, например, печать трассировки стека; некоторые предоставляют интерфейсы, специфичные для определенных операционных систем, например, доступ к определенному оборудованию; другие предоставляют интерфейсы, специфичные для конкретной области применения, например, для Всемирной паутины. Некоторые модули доступны во всех версиях и портах Python; другие доступны только в том случае, если базовая система поддерживает или требует их; третьи доступны только в том случае, если во время компиляции и установки Python был выбран определенный параметр конфигурации.

Это руководство составлено «изнутри наружу»: сначала в нем описываются встроенные функции, типы данных и исключения и, наконец, модули, сгруппированные по главам связанных модулей.

Это означает, что если вы начнете читать это руководство с самого начала и перейдете к следующей главе, когда вам станет скучно, вы получите исчерпывающий обзор доступных модулей и областей применения, которые поддерживаются библиотекой Python. Конечно, вам не обязательно читать это как роман - вы также можете просмотреть оглавление (в начале руководства) или поискать конкретную функцию, модуль или термин в указателе (в конце). И, наконец, если вам нравится изучать случайные темы, вы выбираете случайный номер страницы (смотрите модуль random) и читаете один или два раздела. Независимо от того, в каком порядке вы читаете разделы данного руководства, полезно начать с главы Встроенные функции, поскольку остальная часть руководства предполагает знакомство с этим материалом.

Да начнется шоу!

Примечания по доступности

  • Примечание «Доступность: Unix» означает, что эта функция обычно используется в системах Unix. В ней не говорится о ее существовании в конкретной операционной системе.

  • Если не указано иное, все функции, которые заявляют о «доступности: Unix», поддерживаются в macOS, которая основана на ядре Unix.

  • Если примечание о доступности содержит как минимальную версию ядра, так и минимальную версию libc, то должны выполняться оба условия. Например, для функции с примечанием Доступность: Linux >= 3.17 с glibc >= 2.27 требуется как Linux 3.17 или новее, так и glibc 2.27 или новее.

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

Платформы WebAssembly wasm32-emscripten (Emscripten) и wasm32-wasi (WASI) предоставляют подмножество POSIX API. Среды выполнения WebAssembly и браузеры изолированы и имеют ограниченный доступ к хосту и внешним ресурсам. Любой модуль стандартной библиотеки Python, использующий процессы, потоки, сети, сигналы или другие формы межпроцессного взаимодействия (IPC), либо недоступен, либо может работать не так, как в других Unix-подобных системах. Функции, связанные с файловым вводом-выводом, файловой системой и правами доступа Unix, ограничены, поскольку. Emscripten не позволяет блокировать ввод-вывод. Другие операции блокировки, такие как sleep(), блокируют цикл обработки событий браузера.

Свойства и поведение Python на платформах WebAssembly зависят от версии Emscripten-SDK или WASI-SDK, среды выполнения MASM (браузер, NodeJS, wasmtime), и флаги времени сборки Python. Стандарты WebAssembly, Emscripten и WASI развиваются; некоторые функции, такие как создание сетей, могут быть поддержаны в будущем.

При использовании Python в браузере пользователям следует учитывать Pyodide или PyScript. Скрипт Py построен поверх Pyodide, который сам построен поверх CPython и Emscripten. Pyodide предоставляет доступ к API JavaScript и DOM браузеров, а также ограниченные сетевые возможности с помощью API JavaScript XMLHttpRequest и Fetch .

  • API-интерфейсы, связанные с процессами, недоступны или всегда завершаются ошибкой. Это включает в себя API, которые запускают новые процессы (fork(), execve()), ожидают процессы (waitpid()), отправляют сигналы (kill()), или иным образом взаимодействуют с процессами. subprocess можно импортировать, но он не работает.

  • Модуль socket доступен, но ограничен и ведет себя иначе, чем на других платформах. В Emscripten сокеты всегда неблокируемы и требуют дополнительного кода JavaScript и помощников на сервере для проксирования TCP через WebSockets; дополнительную информацию смотрите в разделе Emscripten Networking. Предварительный просмотр моментального снимка WASI snapshot preview 1 разрешает использование сокетов только из существующего файлового дескриптора.

  • Некоторые функции являются заглушками, которые либо ничего не делают, либо всегда возвращают жестко заданные значения.

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

Вернуться на верх