Introduction¶
La "Bibliothèque Python" contient divers composants dans différentes catégories.
Elle contient des types de données qui seraient normalement considérés comme "fondamentaux" au langage, tel que les nombres et les listes. Pour ces types, le cœur du langage en définit les écritures littérales et impose quelques contraintes sémantiques, sans les définir exhaustivement. (Cependant le cœur du langage impose quelques propriétés comme l'orthographe des attributs ou les caractéristiques des opérateurs.)
La bibliothèque contient aussi des fonctions et des exceptions natives, pouvant être utilisées par tout code Python sans import
. Certaines sont définies par le noyau de Python, bien qu'elles ne soient pas toutes essentielles.
La grande majorité de la bibliothèque consiste cependant en une collection de modules. Cette collection peut être parcourue de différentes manières. Certains modules sont rédigés en C et inclus dans l'interpréteur Python, d'autres sont écrits en Python et leur source est importée. Certains modules fournissent des interfaces extrêmement spécifiques à Python, tel que l'affichage d'une pile d'appels, d'autres fournissent des interfaces spécifiques à un système d'exploitation, comme l'accès à du matériel spécifique. D'autres fournissent des interfaces spécifiques à un domaine d'application, comme le World Wide Web. Certains modules sont disponibles dans toutes les versions et implémentations de Python, d'autres ne sont disponibles que si le système sous-jacent les gère ou en a besoin. Enfin, d'autres ne sont disponibles que si Python à été compilé avec une certaine option.
Cette documentation organise les modules "de l'intérieur vers l'extérieur", documentant en premier les fonctions natives, les types de données et exceptions, puis les modules, groupés par chapitre, par thématiques.
Ça signifie que si vous commencez à lire cette documentation du début, et sautez au chapitre suivant lorsqu'elle vous ennuie, vous aurez un aperçu global des modules et domaines couverts par cette bibliothèque. Bien sûr vous n'avez pas à la lire comme un roman, vous pouvez simplement survoler la table des matières (au début), ou chercher une fonction, un module, ou un mot dans l'index (à la fin). Et si vous appréciez apprendre sur des sujets au hasard, choisissez une page au hasard (avec le module random
) et lisez un chapitre ou deux. Peu importe l'ordre que vous adopterez, commencez par le chapitre Fonctions natives, car les autres chapitres présument que vous en avez une bonne connaissance.
Que le spectacle commence !
Notes sur la disponibilité¶
Une note "Disponibilité : Unix " signifie que cette fonction est communément implémentée dans les systèmes Unix. Une telle note ne prétend pas l'existence de la fonction sur un système d'exploitation particulier.
Si ce n'est pas mentionné séparément, toutes les fonctions se réclamant "Disponibilité : Unix" sont gérées sur macOS, qui est basé sur 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 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.
Process-related APIs are not available or always fail with an error. That includes APIs that spawn new processes (
fork()
,execve()
), wait for processes (waitpid()
), send signals (kill()
), or otherwise interact with processes. Thesubprocess
is importable but does not work.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.Some functions are stubs that either don't do anything and always return hardcoded values.
Functions related to file descriptors, file permissions, file ownership, and links are limited and don't support some operations. For example, WASI does not permit symlinks with absolute file names.