Документация Python неофициальный перевод
Содержание страницы

Введение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.

Платформы WebAssemblyWebAssembly 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 socket module 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 multiprocessing is 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. stdout and stderr exist, and content written to stdout and stderr will 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 to stdout or stderr.

    • Мобильные приложения вообще не имеют работоспособного stdin. Хотя приложения могут отображать экранную клавиатуру, это программная функция, а не нечто, подключённое к stdin.

      В результате модули Python, связанные с манипуляциями консолью (например, curses и readline), недоступны на мобильных платформах.