Содержание страницы
Введение¶Introduction
«Библиотека Python» содержит несколько различных видов компонентов.
В неё входят типы данных, которые обычно считаются частью «ядра» языка, например числа и списки. Для этих типов ядро языка определяет форму литералов и накладывает некоторые ограничения на их семантику, но не определяет семантику полностью. (С другой стороны, ядро языка определяет синтаксические свойства, такие как написание и приоритет операторов.)
Библиотека также содержит встроенные функции и исключения – объекты, которые могут использоваться любым кодом Python без необходимости в инструкции import. Некоторые из них определены ядром языка, но многие не являются обязательными для базовой семантики и описаны только здесь.
Однако основную часть библиотеки составляет набор модулей. Этот набор можно классифицировать по-разному. Некоторые модули написаны на C и встроены в интерпретатор Python; другие написаны на Python и импортируются в виде исходного кода. Одни модули предоставляют интерфейсы, специфичные для Python, например вывод трассировки стека; другие – интерфейсы, специфичные для конкретных операционных систем, такие как доступ к определённому оборудованию; третьи – интерфейсы для конкретных прикладных областей, например Всемирной паутины. Некоторые модули доступны во всех версиях и портах Python; другие доступны только при поддержке или требовании со стороны базовой системы; третьи – только если при компиляции и установке Python была выбрана соответствующая опция конфигурации.
Данное руководство организовано «изнутри наружу»: сначала описываются встроенные функции, типы данных и исключения, а затем модули, сгруппированные по главам родственных модулей.
This means that if you start reading this manual from the start, and skip to the
next chapter when you get bored, you will get a reasonable overview of the
available modules and application areas that are supported by the Python
library. Of course, you don’t have to read it like a novel – you can also
browse the table of contents (in front of the manual), or look for a specific
function, module or term in the index (in the back). And finally, if you enjoy
learning about random subjects, you choose a random page number (see module
random) and read a section or two. Regardless of the order in which you
read the sections of this manual, it helps to start with chapter
Built-in Functions, as the remainder of the manual assumes familiarity with
this material.
Итак, представление начинается!
Примечания о доступности¶Notes on availability
Примечание «Доступность: Unix» означает, что эта функция обычно встречается в системах Unix. Оно не утверждает о её существовании в конкретной операционной системе.
Если не указано иное, все функции с пометкой «Доступность: Unix» поддерживаются в macOS, iOS и Android, которые построены на ядре Unix.
If an availability note contains both a minimum Kernel version and a minimum libc version, then both conditions must hold. For example a feature with note Availability: Linux >= 3.17 with glibc >= 2.27 requires both Linux 3.17 or newer and glibc 2.27 or newer.
Платформы WebAssembly¶WebAssembly platforms
The WebAssembly platforms wasm32-emscripten (Emscripten) and
wasm32-wasi (WASI) provide a subset of POSIX APIs. WebAssembly runtimes
and browsers are sandboxed and have limited access to the host and external
resources. Any Python standard library module that uses processes, threading,
networking, signals, or other forms of inter-process communication (IPC), is
either not available or may not work as on other Unix-like systems. File I/O,
file system, and Unix permission-related functions are restricted, too.
Emscripten does not permit blocking I/O. Other blocking operations like
sleep() block the browser event loop.
The properties and behavior of Python on WebAssembly platforms depend on the Emscripten-SDK or WASI-SDK version, WASM runtimes (browser, NodeJS, wasmtime), and Python build time flags. WebAssembly, Emscripten, and WASI are evolving standards; some features like networking may be supported in the future.
For Python in the browser, users should consider Pyodide or PyScript.
PyScript is built on top of Pyodide, which itself is built on top of
CPython and Emscripten. Pyodide provides access to browsers’ JavaScript and
DOM APIs as well as limited networking capabilities with JavaScript’s
XMLHttpRequest and Fetch APIs.
API, связанные с процессами, недоступны или всегда завершаются ошибкой. Сюда входят API для порождения новых процессов (
fork(),execve()), ожидания процессов (waitpid()), отправки сигналов (kill()) или иного взаимодействия с процессами. Модульsubprocessимпортируется, но не работает.The
socketmodule is available, but is limited and behaves differently from other platforms. On Emscripten, sockets are always non-blocking and require additional JavaScript code and helpers on the server to proxy TCP through WebSockets; see Emscripten Networking for more information. WASI snapshot preview 1 only permits sockets from an existing file descriptor.Некоторые функции являются заглушками, которые либо ничего не делают и всегда возвращают жёстко заданные значения.
Функции, связанные с файловыми дескрипторами, правами доступа к файлам, владельцами файлов и ссылками, ограничены и не поддерживают некоторые операции. Например, WASI не разрешает символические ссылки с абсолютными именами файлов.
Мобильные платформы¶Mobile platforms
Android и iOS в большинстве аспектов являются операционными системами POSIX. Ввод-вывод файлов, работа с сокетами и многопоточность ведут себя так же, как в любой POSIX-системе. Однако есть несколько важных отличий:
Mobile platforms can only use Python in “embedded” mode. There is no Python REPL, and no ability to use separate executables such as python or pip. To add Python code to your mobile app, you must use the Python embedding API. For more details, see Using Python on Android and Using Python on iOS.
Подпроцессы:
On Android, creating subprocesses is possible but officially unsupported. In particular, Android does not support any part of the System V IPC API, so
multiprocessingis not available.Приложение iOS не может использовать никакие формы подпроцессов, многопроцессорной обработки или межпроцессного взаимодействия. Если приложение iOS попытается создать подпроцесс, процесс, создающий подпроцесс, либо зависнет, либо выйдет из строя. Приложение iOS не видит другие запущенные приложения и не может взаимодействовать с ними вне iOS-специфичных API, существующих для этой цели.
Mobile apps have limited access to modify system resources (such as the system clock). These resources will often be readable, but attempts to modify those resources will usually fail.
Консольный ввод и вывод:
На Android собственные
stdoutиstderrни к чему не подключены, поэтому Python устанавливает собственные потоки, которые перенаправляют сообщения в системный журнал. Их можно увидеть под тегамиpython.stdoutиpython.stderrсоответственно.iOS apps have a limited concept of console output.
stdoutandstderrexist, and content written tostdoutandstderrwill be visible in logs when running in Xcode, but this content won’t be recorded in the system log. If a user who has installed your app provides their app logs as a diagnostic aid, they will not include any detail written tostdoutorstderr.Мобильные приложения вообще не имеют работоспособного
stdin. Хотя приложения могут отображать экранную клавиатуру, это программная функция, а не нечто, подключённое кstdin.В результате модули Python, связанные с манипуляциями консолью (например,
cursesиreadline), недоступны на мобильных платформах.