# Glossaire

`>>>`

  The default Python prompt of the interactive shell. Often seen for code examples which can be executed interactively in the interpreter.

`...`

  Peut faire référence à :

  - The default Python prompt of the interactive shell when entering the code for an indented code block, when within a pair of matching left and right delimiters (parentheses, square brackets, curly braces or triple quotes), or after specifying a decorator.

  - The three dots form of the Ellipsis object.

classe mère abstraite

  Les classes mères abstraites (ABC, suivant l'abréviation anglaise Abstract Base Class) complètent le duck-typing en fournissant un moyen de définir des interfaces pour les cas où d'autres techniques comme `hasattr()` seraient inélégantes ou subtilement fausses (par exemple avec les méthodes magiques). Les ABC introduisent des sous-classes virtuelles qui n'héritent pas d'une classe mais qui sont quand même reconnues par `isinstance()` ou `issubclass()` (voir la documentation du module `abc`). Python contient de nombreuses ABC pour les structures de données (dans le module `collections.abc`), les nombres (dans le module `numbers`), les flux (dans le module `io`) et les chercheurs-chargeurs du système d'importation (dans le module `importlib.abc`). Vous pouvez créer vos propres ABC avec le module `abc`.

annotate function

  A function that can be called to retrieve the annotations of an object. This function is accessible as the `__annotate__` attribute of functions, classes, and modules. Annotate functions are a subset of evaluate functions.

annotation

  Étiquette associée à une variable, un attribut de classe, un paramètre de fonction ou une valeur de retour. Elle est utilisée par convention comme type hint.

  Annotations of local variables cannot be accessed at runtime, but annotations of global variables, class attributes, and functions can be retrieved by calling `annotationlib.get_annotations()` on modules, classes, and functions, respectively.

  See variable annotation, function annotation, PEP 484, PEP 526, and PEP 649, which describe this functionality. Also see Bonnes pratiques concernant les annotations for best practices on working with annotations.

argument

  Valeur, donnée à une fonction ou à une méthode lors de son appel. Il existe deux types d'arguments :

  - argument nommé : un argument précédé d'un identifiant (comme `name=`) ou un dictionnaire précédé de `**`, lors d'un appel de fonction. Par exemple, `3` et `5` sont tous les deux des arguments nommés dans l'appel à `complex()` ici :

        complex(real=3, imag=5)
        complex(**{'real': 3, 'imag': 5})

  - argument positionnel : un argument qui n'est pas nommé. Les arguments positionnels apparaissent au début de la liste des arguments, ou donnés sous forme d'un itérable précédé par `*`. Par exemple, `3` et `5` sont tous les deux des arguments positionnels dans les appels suivants :

        complex(3, 5)
        complex(*(3, 5))

  Les arguments se retrouvent dans le corps de la fonction appelée parmi les variables locales. Voir la section Appels à propos des règles dictant cette affectation. Syntaxiquement, toute expression est acceptée comme argument, et c'est la valeur résultante de l'expression qui sera affectée à la variable locale.

  Voir aussi paramètre dans le glossaire, la question Différence entre argument et paramètre de la FAQ et la PEP 362.

gestionnaire de contexte asynchrone

  (asynchronous context manager en anglais) Objet contrôlant l'environnement à l'intérieur d'une instruction `async with` en définissant les méthodes `__aenter__()` et `__aexit__()`. A été Introduit par la PEP 492.

générateur asynchrone

  Fonction qui renvoie un itérateur de générateur asynchrone. Cela ressemble à une coroutine définie par `async def`, sauf qu'elle contient une ou des expressions `yield` produisant ainsi uns série de valeurs utilisables dans une boucle `async for`.

  Générateur asynchrone fait généralement référence à une fonction, mais peut faire référence à un itérateur de générateur asynchrone dans certains contextes. Dans les cas où le sens voulu n'est pas clair, utiliser l'ensemble des termes lève l’ambiguïté.

  Un générateur asynchrone peut contenir des expressions `await` ainsi que des instructions `async for`, et `async with`.

itérateur de générateur asynchrone

  An object created by an asynchronous generator function.

  C'est un asynchronous iterator qui, lorsqu'il est appelé via la méthode `__anext__()` renvoie un objet awaitable qui exécute le corps de la fonction du générateur asynchrone jusqu'au prochain `yield`.

  Each `yield` temporarily suspends processing, remembering the execution state (including local variables and pending try-statements). When the asynchronous generator iterator effectively resumes with another awaitable returned by `__anext__()`, it picks up where it left off. See PEP 492 and PEP 525.

itérable asynchrone

  Objet qui peut être utilisé dans une instruction `async for`. Sa méthode `__aiter__()` doit renvoyer un asynchronous iterator. A été introduit par la PEP 492.

itérateur asynchrone

  Objet qui implémente les méthodes `__aiter__()` et `__anext__()`. `__anext__()` doit renvoyer un objet awaitable. Tant que la méthode `__anext__()` produit des objets awaitable, le `async for` appelant les consomme. L'itérateur asynchrone lève une exception `StopAsyncIteration` pour signifier la fin de l'itération. A été introduit par la PEP 492.

atomic operation

  An operation that appears to execute as a single, indivisible step: no other thread can observe it half-done, and its effects become visible all at once. Python does not guarantee that high-level statements are atomic (for example, `x += 1` performs multiple bytecode operations and is not atomic). Atomicity is only guaranteed where explicitly documented. See also race condition and data race.

attached thread state

  A thread state that is active for the current OS thread.

  When a thread state is attached, the OS thread has access to the full Python C API and can safely invoke the bytecode interpreter.

  Unless a function explicitly notes otherwise, attempting to call the C API without an attached thread state will result in a fatal error or undefined behavior. A thread state can be attached and detached explicitly by the user through the C API, or implicitly by the runtime, including during blocking C calls and by the bytecode interpreter in between calls.

  On most builds of Python, having an attached thread state implies that the caller holds the GIL for the current interpreter, so only one OS thread can have an attached thread state at a given moment. In free-threaded builds of Python, threads can concurrently hold an attached thread state, allowing for true parallelism of the bytecode interpreter.

attribut

  Valeur associée à un objet et habituellement désignée par son nom via une notation utilisant des points. Par exemple, si un objet o possède un attribut a, cet attribut est référencé par o.a.

  Il est possible de donner à un objet un attribut dont le nom n'est pas un identifiant tel que défini pour les Names (identifiers and keywords), par exemple en utilisant `setattr()`, si l'objet le permet. Un tel attribut ne sera pas accessible à l'aide d'une expression pointée et on devra y accéder avec `getattr()`.

attendable (awaitable)

  Objet pouvant être utilisé dans une expression `await`. Ce peut être une coroutine ou un objet avec une méthode `__await__()`. Voir aussi la PEP 492.

BDFL

  Dictateur bienveillant à vie (Benevolent Dictator For Life en anglais). Pseudonyme de Guido van Rossum, le créateur de Python.

fichier binaire

  A file object able to read and write bytes-like objects. Examples of binary files are files opened in binary mode (`'rb'`, `'wb'` or `'rb+'`), `sys.stdin.buffer`, `sys.stdout.buffer`, and instances of `io.BytesIO` and `gzip.GzipFile`.

  Consultez fichier texte, un objet fichier capable de lire et d'écrire des objets `str`.

référence empruntée

  In Python's C API, a borrowed reference is a reference to an object, where the code using the object does not own the reference. It becomes a dangling pointer if the object is destroyed. For example, a garbage collection can remove the last strong reference to the object and so destroy it.

  Il est recommandé d'appeler `Py_INCREF()` sur la référence empruntée, ce qui la transforme in situ en une référence forte. Vous pouvez faire une exception si vous êtes certain que l'objet ne peut pas être supprimé avant la dernière utilisation de la référence empruntée. Voir aussi la fonction `Py_NewRef()`, qui crée une nouvelle référence forte.

objet octet-compatible

  Un objet gérant le protocole tampon et pouvant exporter un tampon (buffer en anglais) C-contigu. Cela inclut les objets `bytes`, `bytearray` et `array.array`, ainsi que beaucoup d'objets `memoryview`. Les objets octets-compatibles peuvent être utilisés pour diverses opérations sur des données binaires, comme la compression, la sauvegarde dans un fichier binaire ou l'envoi sur le réseau.

  Certaines opérations nécessitent de travailler sur des données binaires variables. La documentation parle de ceux-ci comme des read-write bytes-like objects. Par exemple, `bytearray` ou une `memoryview` d'un `bytearray` en font partie. D'autres opérations nécessitent de travailler sur des données binaires stockées dans des objets immuables (« objets octets-compatibles en lecture seule »), par exemple des `bytes` ou des `memoryview` d'un objet `bytes`.

code intermédiaire (bytecode)

  Le code source, en Python, est compilé en un code intermédiaire (bytecode en anglais), la représentation interne à CPython d'un programme Python. Le code intermédiaire est mis en cache dans un fichier `.pyc` de manière à ce qu'une seconde exécution soit plus rapide (la compilation en code intermédiaire a déjà été faite). On dit que ce langage intermédiaire est exécuté sur une virtual machine qui exécute des instructions machine pour chaque instruction du code intermédiaire. Notez que le code intermédiaire n'a pas vocation à fonctionner sur différentes machines virtuelles Python ou à être stable entre différentes versions de Python.

  La documentation du module dis fournit une liste des instructions du code intermédiaire.

appelable (callable)

  Un appelable est un objet qui peut être appelé, éventuellement avec un ensemble d'arguments (voir argument), avec la syntaxe suivante :

      callable(argument1, argument2, argumentN)

  Une fonction, et par extension une méthode, est un appelable. Une instance d'une classe qui implémente la méthode `__call__()` est également un appelable.

fonction de rappel (callback)

  Une fonction (classique, par opposition à une coroutine) passée en argument pour être exécutée plus tard.

classe

  Modèle pour créer des objets définis par l'utilisateur. Une définition de classe (class) contient normalement des définitions de méthodes qui agissent sur les instances de la classe.

variable de classe

  Une variable définie dans une classe et destinée à être modifiée uniquement au niveau de la classe (c'est-à-dire, pas dans une instance de la classe).

closure variable

  A free variable referenced from a nested scope that is defined in an outer scope rather than being resolved at runtime from the globals or builtin namespaces. May be explicitly defined with the `nonlocal` keyword to allow write access, or implicitly defined if the variable is only being read.

  For example, in the `inner` function in the following code, both `x` and `print` are free variables, but only `x` is a closure variable:

      def outer():
          x = 0
          def inner():
              nonlocal x
              x += 1
              print(x)
          return inner

  Due to the `codeobject.co_freevars` attribute (which, despite its name, only includes the names of closure variables rather than listing all referenced free variables), the more general free variable term is sometimes used even when the intended meaning is to refer specifically to closure variables.

nombre complexe

  Extension des nombres réels familiers, dans laquelle tous les nombres sont exprimés sous la forme d'une somme d'une partie réelle et d'une partie imaginaire. Les nombres imaginaires sont les nombres réels multipliés par l'unité imaginaire (la racine carrée de `-1`, souvent écrite `i` en mathématiques ou `j` par les ingénieurs). Python comprend nativement les nombres complexes, écrits avec cette dernière notation : la partie imaginaire est écrite avec un suffixe `j`, exemple, `3+1j`. Pour utiliser les équivalents complexes de `math`, utilisez `cmath`. Les nombres complexes sont un concept assez avancé en mathématiques. Si vous ne connaissez pas ce concept, vous pouvez tranquillement les ignorer.

concurrency

  The ability of a computer program to perform multiple tasks at the same time. Python provides libraries for writing programs that make use of different forms of concurrency. `asyncio` is a library for dealing with asynchronous tasks and coroutines. `threading` provides access to operating system threads and `multiprocessing` to operating system processes. Multi-core processors can execute threads and processes on different CPU cores at the same time (see parallelism).

concurrent modification

  When multiple threads modify shared data at the same time. Concurrent modification without proper synchronization can cause race conditions, and might also trigger a data race, data corruption, or both.

context

  This term has different meanings depending on where and how it is used. Some common meanings:

  - The temporary state or environment established by a context manager via a `with` statement.

  - The collection of keyvalue bindings associated with a particular `contextvars.Context` object and accessed via `ContextVar` objects. Also see context variable.

  - A `contextvars.Context` object. Also see current context.

context management protocol

  The `__enter__()` and `__exit__()` methods called by the `with` statement. See PEP 343.

gestionnaire de contexte

  An object which implements the context management protocol and controls the environment seen in a `with` statement. See PEP 343.

variable de contexte

  A variable whose value depends on which context is the current context. Values are accessed via `contextvars.ContextVar` objects. Context variables are primarily used to isolate state between concurrent asynchronous tasks.

contigu

  Un tampon (buffer en anglais) est considéré comme contigu s’il est soit C-contigu soit Fortran-contigu. Les tampons de dimension zéro sont C-contigus et Fortran-contigus. Pour un tableau à une dimension, ses éléments doivent être placés en mémoire l’un à côté de l’autre, dans l’ordre croissant de leur indice, en commençant à zéro. Pour qu’un tableau multidimensionnel soit C-contigu, le dernier indice doit être celui qui varie le plus rapidement lors du parcours de ses éléments dans l’ordre de leur adresse mémoire. À l'inverse, dans les tableaux Fortran-contigu, c’est le premier indice qui doit varier le plus rapidement.

coroutine

  Les coroutines sont une forme généralisée des fonctions. On entre dans une fonction en un point et on en sort en un autre point. On peut entrer, sortir et reprendre l'exécution d'une coroutine en plusieurs points. Elles peuvent être implémentées en utilisant l'instruction `async def`. Voir aussi la PEP 492.

fonction coroutine

  Fonction qui renvoie un objet coroutine. Une fonction coroutine peut être définie par l'instruction `async def` et peut contenir les mots clés `await`, `async for` ainsi que `async with`. A été introduit par la PEP 492.

CPython

  L'implémentation canonique du langage de programmation Python, tel que distribué sur python.org. Le terme "CPython" est utilisé dans certains contextes lorsqu'il est nécessaire de distinguer cette implémentation des autres comme Jython ou IronPython.

current context

  The context (`contextvars.Context` object) that is currently used by `ContextVar` objects to access (get or set) the values of context variables. Each thread has its own current context. Frameworks for executing asynchronous tasks (see `asyncio`) associate each task with a context which becomes the current context whenever the task starts or resumes execution.

cyclic isolate

  A subgroup of one or more objects that reference each other in a reference cycle, but are not referenced by objects outside the group. The goal of the cyclic garbage collector is to identify these groups and break the reference cycles so that the memory can be reclaimed.

data race

  A situation where multiple threads access the same memory location concurrently, at least one of the accesses is a write, and the threads do not use any synchronization to control their access. Data races lead to non-deterministic behavior and can cause data corruption. Proper use of locks and other synchronization primitives prevents data races. Note that data races can only happen in native code, but that native code might be exposed in a Python API. See also race condition and thread-safe.

deadlock

  A situation in which two or more tasks (threads, processes, or coroutines) wait indefinitely for each other to release resources or complete actions, preventing any from making progress. For example, if thread A holds lock 1 and waits for lock 2, while thread B holds lock 2 and waits for lock 1, both threads will wait indefinitely. In Python this often arises from acquiring multiple locks in conflicting orders or from circular join/await dependencies. Deadlocks can be avoided by always acquiring multiple locks in a consistent order. See also lock and reentrant.

décorateur

  Fonction dont la valeur de retour est une autre fonction. Un décorateur est habituellement utilisé pour transformer une fonction via la syntaxe `@wrapper`, dont les exemples typiques sont : `classmethod()` et `staticmethod()`.

  La syntaxe des décorateurs est simplement du sucre syntaxique, les définitions des deux fonctions suivantes sont sémantiquement équivalentes :

      def f(arg):
          ...
      f = staticmethod(f)

      @staticmethod
      def f(arg):
          ...

  Quoique moins fréquemment utilisé, le même concept existe pour les classes. Consultez la documentation définitions de fonctions et définitions de classes pour en savoir plus sur les décorateurs.

descripteur

  Any object which defines the methods `__get__()`, `__set__()`, or `__delete__()`. When a class attribute is a descriptor, its special binding behavior is triggered upon attribute lookup. Normally, using a.b to get, set or delete an attribute looks up the object named b in the class dictionary for a, but if b is a descriptor, the respective descriptor method gets called. Understanding descriptors is a key to a deep understanding of Python because they are the basis for many features including functions, methods, properties, class methods, static methods, and reference to super classes.

  Pour plus d'informations sur les méthodes des descripteurs, consultez Implémentation de descripteurs ou le guide pour l'utilisation des descripteurs.

dictionnaire

  An associative array, where arbitrary keys are mapped to values. The keys can be any object with `__hash__()` and `__eq__()` methods. Called a hash in Perl.

dictionnaire en compréhension (ou dictionnaire en intension)

  Écriture concise pour traiter tout ou partie des éléments d'un itérable et renvoyer un dictionnaire contenant les résultats. `results = {n: n ** 2 for n in range(10)}` génère un dictionnaire contenant des clés `n` liées à leurs valeurs `n ** 2`. Voir compréhensions.

vue de dictionnaire

  Objets retournés par les méthodes `dict.keys()`, `dict.values()` et `dict.items()`. Ils fournissent des vues dynamiques des entrées du dictionnaire, ce qui signifie que lorsque le dictionnaire change, la vue change. Pour transformer une vue en vraie liste, utilisez `list(dictview)`. Voir Les vues de dictionnaires.

chaîne de documentation (docstring)

  A string literal which appears as the first expression in a class, function or module. While ignored when the suite is executed, it is recognized by the compiler and put into the `__doc__` attribute of the enclosing class, function or module. Since it is available via introspection, it is the canonical place for documentation of the object.

typage canard (duck-typing)

  Style de programmation qui ne prend pas en compte le type d'un objet pour déterminer s'il respecte une interface, mais qui appelle simplement la méthode ou l'attribut (Si ça a un bec et que ça cancane, ça doit être un canard, duck signifie canard en anglais). En se concentrant sur les interfaces plutôt que les types, du code bien construit améliore sa flexibilité en autorisant des substitutions polymorphiques. Le duck-typing évite de vérifier les types via `type()` ou `isinstance()`, Notez cependant que le duck-typing peut travailler de pair avec les classes mère abstraites. À la place, le duck-typing utilise plutôt `hasattr()` ou la programmation EAFP.

dunder

  An informal short-hand for "double underscore", used when talking about a special method. For example, `__init__` is often pronounced "dunder init".

EAFP

  Il est plus simple de demander pardon que demander la permission (Easier to Ask for Forgiveness than Permission en anglais). Ce style de développement Python fait l'hypothèse que le code est valide et traite les exceptions si cette hypothèse s'avère fausse. Ce style, propre et efficace, est caractérisé par la présence de beaucoup de mots clés `try` et `except`. Cette technique de programmation contraste avec le style LBYL utilisé couramment dans les langages tels que C.

evaluate function

  A function that can be called to evaluate a lazily evaluated attribute of an object, such as the value of type aliases created with the `type` statement.

expression

  Suite logique de termes et chiffres conformes à la syntaxe Python dont l'évaluation fournit une valeur. En d'autres termes, une expression est une suite d'éléments tels que des noms, opérateurs, littéraux, accès d'attributs, méthodes ou fonctions qui aboutissent à une valeur. Contrairement à beaucoup d'autres langages, les différentes constructions du langage ne sont pas toutes des expressions. On trouve également des instructions qui ne peuvent pas être utilisées comme expressions, tel que `while`. Les affectations sont également des instructions et non des expressions.

module d'extension

  Module écrit en C ou C++, utilisant l'API C de Python pour interagir avec Python et le code de l'utilisateur.

f-string
f-strings

  String literals prefixed with `f` or `F` are commonly called "f-strings" which is short for formatted string literals. See also PEP 498.

objet fichier

  An object exposing a file-oriented API (with methods such as `read()` or `write()`) to an underlying resource. Depending on the way it was created, a file object can mediate access to a real on-disk file or to another type of storage or communication device (for example standard input/output, in-memory buffers, sockets, pipes, etc.). File objects are also called file-like objects or streams.

  Il existe en réalité trois catégories de fichiers objets : les fichiers binaires bruts, les fichiers binaires avec tampon (buffer) et les fichiers textes. Leurs interfaces sont définies dans le module `io`. Le moyen le plus simple et direct de créer un objet fichier est d'utiliser la fonction `open()`.

objet fichier-compatible

  Synonyme de objet fichier.

encodage du système de fichiers et gestionnaire d'erreurs associé

  Encodage et gestionnaire d'erreurs utilisés par Python pour décoder les octets fournis par le système d'exploitation et encoder les chaînes de caractères Unicode afin de les passer au système.

  L'encodage du système de fichiers doit impérativement pouvoir décoder tous les octets jusqu'à 128. Si ce n'est pas le cas, certaines fonctions de l'API lèvent `UnicodeError`.

  Cet encodage et son gestionnaire d'erreur peuvent être obtenus à l'aide des fonctions `sys.getfilesystemencoding()` et `sys.getfilesystemencodeerrors()`.

  L'encodage du système de fichiers et gestionnaire d'erreurs associé sont configurés au démarrage de Python par la fonction `PyConfig_Read()` : regardez `filesystem_encoding` et `filesystem_errors` dans les membres de `PyConfig`.

  Voir aussi encodage régional.

chercheur

  Objet qui essaie de trouver un chargeur pour le module en cours d'importation.

  There are two types of finder: meta path finders for use with `sys.meta_path`, and path entry finders for use with `sys.path_hooks`.

  See Chercheurs et chargeurs and `importlib` for much more detail.

division entière

  Division mathématique arrondissant à l'entier inférieur. L'opérateur de la division entière est `//`. Par exemple l'expression `11 // 4` vaut `2`, contrairement à `11 / 4` qui vaut `2.75`. Notez que `(-11) // 4` vaut `-3` car l'arrondi se fait à l'entier inférieur. Voir la PEP 328.

free threading

  A threading model where multiple threads can run Python bytecode simultaneously within the same interpreter. This is in contrast to the global interpreter lock which allows only one thread to execute Python bytecode at a time. See PEP 703.

free-threaded build

  A build of CPython that supports free threading, configured using the `--disable-gil` option before compilation.

  See Python support for free threading.

free variable

  Formally, as defined in the language execution model, a free variable is any variable used in a namespace which is not a local variable in that namespace. See closure variable for an example. Pragmatically, due to the name of the `codeobject.co_freevars` attribute, the term is also sometimes used as a synonym for closure variable.

fonction

  Suite d'instructions qui renvoie une valeur à son appelant. On peut lui passer des arguments qui pourront être utilisés dans le corps de la fonction. Voir aussi paramètre, méthode et Définition de fonctions.

annotation de fonction

  annotation d'un paramètre de fonction ou valeur de retour.

  Les annotations de fonctions sont généralement utilisées pour des indications de types : par exemple, cette fonction devrait prendre deux arguments `int` et devrait également avoir une valeur de retour de type `int` :

      def sum_two_numbers(a: int, b: int) -> int:
         return a + b

  L'annotation syntaxique de la fonction est expliquée dans la section Définition de fonctions.

  Voir annotation de variable et la PEP 484, qui décrivent cette fonctionnalité. Voir aussi Bonnes pratiques concernant les annotations sur les bonnes pratiques concernant les annotations.

__future__

  Une importation depuis le futur s'écrit `from __future__ import <fonctionnalité>`. Lorsqu'une importation du futur est active dans un module, Python compile ce module avec une certaine modification de la syntaxe ou du comportement qui est vouée à devenir standard dans une version ultérieure. Le module `__future__` documente les possibilités pour fonctionnalité. L'importation a aussi l'effet normal d'importer une variable du module. Cette variable contient des informations utiles sur la fonctionnalité en question, notamment la version de Python dans laquelle elle a été ajoutée, et celle dans laquelle elle deviendra standard :

      >>> import __future__
      >>> __future__.division
      _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)

ramasse-miettes

  (garbage collection en anglais) Mécanisme permettant de libérer de la mémoire lorsqu'elle n'est plus utilisée. Python utilise un ramasse-miettes par comptage de référence et un ramasse-miettes cyclique capable de détecter et casser les références circulaires. Le ramasse-miettes peut être contrôlé en utilisant le module `gc`.

générateur

  Fonction qui renvoie un itérateur de générateur. Cela ressemble à une fonction normale, en dehors du fait qu'elle contient une ou des expressions `yield` produisant une série de valeurs utilisable dans une boucle for ou récupérées une à une via la fonction `next()`.

  Fait généralement référence à une fonction génératrice mais peut faire référence à un itérateur de générateur dans certains contextes. Dans les cas où le sens voulu n'est pas clair, utiliser les termes complets lève l’ambiguïté.

itérateur de générateur

  Objet créé par une fonction générateur.

  Each `yield` temporarily suspends processing, remembering the execution state (including local variables and pending try-statements). When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).

expression génératrice

  An expression that returns an iterator. It looks like a normal expression followed by a `for` clause defining a loop variable, range, and an optional `if` clause. The combined expression generates values for an enclosing function:

      >>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
      285

fonction générique

  Fonction composée de plusieurs fonctions implémentant les mêmes opérations pour différents types. L'implémentation à utiliser est déterminée lors de l'appel par l'algorithme de répartition.

  Voir aussi single dispatch, le décorateur `functools.singledispatch()` et la PEP 443.

type générique

  Un type qui peut être paramétré ; généralement un conteneur comme `list` ou `dict`. Utilisé pour les indications de type et les annotations.

  Pour plus de détails, voir types alias génériques et le module `typing`. On trouvera l'historique de cette fonctionnalité dans les PEP 483, PEP 484 et PEP 585.

GIL

  Voir global interpreter lock.

verrou global de l'interpréteur

  (global interpreter lock en anglais) Mécanisme utilisé par l'interpréteur CPython pour s'assurer qu'un seul fil d'exécution (thread en anglais) n'exécute le bytecode à la fois. Cela simplifie l'implémentation de CPython en rendant le modèle objet (incluant des parties critiques comme la classe native `dict`) implicitement protégé contre les accès concourants. Verrouiller l'interpréteur entier rend plus facile l'implémentation de multiples fils d'exécution (multi-thread en anglais), au détriment malheureusement de beaucoup du parallélisme possible sur les machines ayant plusieurs processeurs.

  Cependant, certains modules d'extension, standards ou non, sont conçus de manière à libérer le GIL lorsqu'ils effectuent des tâches lourdes tel que la compression ou le hachage. De la même manière, le GIL est toujours libéré lors des entrées-sorties.

  As of Python 3.13, the GIL can be disabled using the `--disable-gil` build configuration. After building Python with this option, code must be run with `-X gil=0` or after setting the `PYTHON_GIL=0` environment variable. This feature enables improved performance for multi-threaded applications and makes it easier to use multi-core CPUs efficiently. For more details, see PEP 703.

  In prior versions of Python's C API, a function might declare that it requires the GIL to be held in order to use it. This refers to having an attached thread state.

global state

  Data that is accessible throughout a program, such as module-level variables, class variables, or C static variables in extension modules. In multi-threaded programs, global state shared between threads typically requires synchronization to avoid race conditions and data races.

pyc utilisant le hachage

  Un fichier de cache de code intermédiaire (bytecode en anglais) qui utilise le hachage plutôt que l'heure de dernière modification du fichier source correspondant pour déterminer sa validité. Voir Invalidation de bytecode mis en cache.

hachable

  An object is hashable if it has a hash value which never changes during its lifetime (it needs a `__hash__()` method), and can be compared to other objects (it needs an `__eq__()` method). Hashable objects which compare equal must have the same hash value.

  La hachabilité permet à un objet d'être utilisé comme clé de dictionnaire ou en tant que membre d'un ensemble (type set), car ces structures de données utilisent ce hash.

  La plupart des types immuables natifs de Python sont hachables, mais les conteneurs mutables (comme les listes ou les dictionnaires) ne le sont pas ; les conteneurs immuables (comme les n-uplets ou les ensembles figés) ne sont hachables que si leurs éléments sont hachables. Les instances de classes définies par les utilisateurs sont hachables par défaut. Elles sont toutes considérées différentes (sauf avec elles-mêmes) et leur valeur de hachage est calculée à partir de leur `id()`.

IDLE

  Environnement d'apprentissage et de développement intégré pour Python. IDLE est un éditeur basique et un interpréteur livré avec la distribution standard de Python.

immortal

  Immortal objects are a CPython implementation detail introduced in PEP 683.

  If an object is immortal, its reference count is never modified, and therefore it is never deallocated while the interpreter is running. For example, `True` and `None` are immortal in CPython.

  Immortal objects can be identified via `sys._is_immortal()`, or via `PyUnstable_IsImmortal()` in the C API.

immuable

  An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary. Immutable objects are inherently thread-safe because their state cannot be modified after creation, eliminating concerns about improperly synchronized concurrent modification.

chemin des importations

  Liste de entrées dans lesquelles le chercheur basé sur les chemins cherche les modules à importer. Typiquement, lors d'une importation, cette liste vient de `sys.path` ; pour les sous-paquets, elle peut aussi venir de l'attribut `__path__` du paquet parent.

importation

  Processus rendant le code Python d'un module disponible dans un autre.

importateur

  Objet qui trouve et charge un module, en même temps un chercheur et un chargeur.

index

  A numeric value that represents the position of an element in a sequence.

  In Python, indexing starts at zero. For example, `things[0]` names the first element of `things`; `things[1]` names the second one.

  In some contexts, Python allows negative indexes for counting from the end of a sequence, and indexing using slices.

  See also subscript.

interactif

  Python has an interactive interpreter which means you can enter statements and expressions at the interpreter prompt, immediately execute them and see their results. Just launch `python` with no arguments (possibly by selecting it from your computer's main menu). It is a very powerful way to test out new ideas or inspect modules and packages (remember `help(x)`). For more on interactive mode, see Mode interactif.

interprété

  Python est un langage interprété, en opposition aux langages compilés, bien que la frontière soit floue en raison de la présence d'un compilateur en code intermédiaire. Cela signifie que les fichiers sources peuvent être exécutés directement, sans avoir à compiler un fichier exécutable intermédiaire. Les langages interprétés ont généralement un cycle de développement / débogage plus court que les langages compilés. Cependant, ils s'exécutent généralement plus lentement. Voir aussi interactif.

arrêt de l'interpréteur

  Lorsqu'on lui demande de s'arrêter, l'interpréteur Python entre dans une phase spéciale où il libère graduellement les ressources allouées, comme les modules ou quelques structures de données internes. Il fait aussi quelques appels au ramasse-miettes. Cela peut déclencher l'exécution de code dans des destructeurs ou des fonctions de rappels de weakrefs. Le code exécuté lors de l'arrêt peut rencontrer des exceptions puisque les ressources auxquelles il fait appel sont susceptibles de ne plus fonctionner, (typiquement les modules des bibliothèques ou le mécanisme de warning).

  La principale raison d'arrêt de l'interpréteur est que le module `__main__` ou le script en cours d'exécution a terminé de s'exécuter.

itérable

  An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as `list`, `str`, and `tuple`) and some non-sequence types like `dict`, file objects, and objects of any classes you define with an `__iter__()` method or with a `__getitem__()` method that implements sequence semantics.

  Iterables can be used in a `for` loop and in many other places where a sequence is needed (`zip()`, `map()`, ...). When an iterable object is passed as an argument to the built-in function `iter()`, it returns an iterator for the object. This iterator is good for one pass over the set of values. When using iterables, it is usually not necessary to call `iter()` or deal with iterator objects yourself. The `for` statement does that automatically for you, creating a temporary unnamed variable to hold the iterator for the duration of the loop. See also iterator, sequence, and generator.

itérateur

  An object representing a stream of data. Repeated calls to the iterator's `__next__()` method (or passing it to the built-in function `next()`) return successive items in the stream. When no more data are available a `StopIteration` exception is raised instead. At this point, the iterator object is exhausted and any further calls to its `__next__()` method just raise `StopIteration` again. Iterators are required to have an `__iter__()` method that returns the iterator object itself so every iterator is also iterable and may be used in most places where other iterables are accepted. One notable exception is code which attempts multiple iteration passes. A container object (such as a `list`) produces a fresh new iterator each time you pass it to the `iter()` function or use it in a `for` loop. Attempting this with an iterator will just return the same exhausted iterator object used in the previous iteration pass, making it appear like an empty container.

  Vous trouverez davantage d'informations dans Les types itérateurs.

  Particularité de l'implémentation CPython : CPython does not consistently apply the requirement that an iterator define `__iter__()`. And also please note that free-threaded CPython does not guarantee thread-safe behavior of iterator operations.

key

  A value that identifies an entry in a mapping. See also subscript.

fonction clé

  Une fonction clé est un objet appelable qui renvoie une valeur à fins de tri ou de classement. Par exemple, la fonction `locale.strxfrm()` est utilisée pour générer une clé de classement prenant en compte les conventions de classement spécifiques aux paramètres régionaux courants.

  Plusieurs outils dans Python acceptent des fonctions clés pour déterminer comment les éléments sont classés ou groupés. On peut citer les fonctions `min()`, `max()`, `sorted()`, `list.sort()`, `heapq.merge()`, `heapq.nsmallest()`, `heapq.nlargest()` et `itertools.groupby()`.

  There are several ways to create a key function. For example. the `str.casefold()` method can serve as a key function for case insensitive sorts. Alternatively, a key function can be built from a `lambda` expression such as `lambda r: (r[0], r[2])`. Also, `operator.attrgetter()`, `operator.itemgetter()`, and `operator.methodcaller()` are three key function constructors. See the Sorting HOW TO for examples of how to create and use key functions.

argument nommé

  Voir argument.

lambda

  Fonction anonyme sous la forme d'une expression et ne contenant qu'une seule expression, exécutée lorsque la fonction est appelée. La syntaxe pour créer des fonctions lambda est : `lambda [parameters]: expression`

LBYL

  Regarde avant de sauter, (Look before you leap en anglais). Ce style de programmation consiste à vérifier des conditions avant d'effectuer des appels ou des accès. Ce style contraste avec le style EAFP et se caractérise par la présence de beaucoup d'instructions `if`.

  In a multi-threaded environment, the LBYL approach can risk introducing a race condition between "the looking" and "the leaping". For example, the code, `if key in mapping: return mapping[key]` can fail if another thread removes key from mapping after the test, but before the lookup. This issue can be solved with locks or by using the EAFP approach. See also thread-safe.

lexical analyzer

  Formal name for the tokenizer; see token.

liste

  A built-in Python sequence. Despite its name it is more akin to an array in other languages than to a linked list since access to elements is O(1).

liste en compréhension (ou liste en intension)

  Écriture concise pour manipuler tout ou partie des éléments d'une séquence et renvoyer une liste contenant les résultats. `result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]` génère la liste composée des nombres pairs de 0 à 255 écrits sous formes de chaînes de caractères et en hexadécimal (`0x…`). La clause `if` est optionnelle. Si elle est omise, tous les éléments du `range(256)` seront utilisés.

lock

  A synchronization primitive that allows only one thread at a time to access a shared resource. A thread must acquire a lock before accessing the protected resource and release it afterward. If a thread attempts to acquire a lock that is already held by another thread, it will block until the lock becomes available. Python's `threading` module provides `Lock` (a basic lock) and `RLock` (a reentrant lock). Locks are used to prevent race conditions and ensure thread-safe access to shared data. Alternative design patterns to locks exist such as queues, producer/consumer patterns, and thread-local state. See also deadlock, and reentrant.

chargeur

  An object that loads a module. It must define the `exec_module()` and `create_module()` methods to implement the `Loader` interface. A loader is typically returned by a finder. See also:

  - Chercheurs et chargeurs

  - `importlib.abc.Loader`

  - PEP 302

encodage régional

  Sous Unix, il est défini par la variable régionale LC_CTYPE. Il peut être modifié par `locale.setlocale(locale.LC_CTYPE, new_locale)`.

  Sous Windows, c'est un encodage ANSI (par ex. : `"cp1252"`).

  Sous Android et VxWorks, Python utilise `"utf-8"` comme encodage régional.

  `locale.getencoding()` can be used to get the locale encoding.

  Voir aussi l'encodage du systèmes de fichiers et gestionnaire d'erreurs associé.

méthode magique

  Un synonyme informel de special method.

tableau de correspondances (mapping en anglais)

  Conteneur permettant de rechercher des éléments à partir de clés et implémentant les méthodes spécifiées dans les classes mères abstraites des `tableaux de correspondances` (immuables) ou `tableaux de correspondances mutables` (voir les classes mères abstraites). Les classes suivantes sont des exemples de tableaux de correspondances : `dict`, `collections.defaultdict`, `collections.OrderedDict` et `collections.Counter`.

chercheur dans les méta-chemins

  Un chercheur renvoyé par une recherche dans `sys.meta_path`. Les chercheurs dans les méta-chemins ressemblent, mais sont différents des chercheurs d'entrée dans path.

  Voir `importlib.abc.MetaPathFinder` pour les méthodes que les chercheurs dans les méta-chemins doivent implémenter.

métaclasse

  Classe d'une classe. Les définitions de classe créent un nom pour la classe, un dictionnaire de classe et une liste de classes parentes. La métaclasse a pour rôle de réunir ces trois paramètres pour construire la classe. La plupart des langages orientés objet fournissent une implémentation par défaut. La particularité de Python est la possibilité de créer des métaclasses personnalisées. La plupart des utilisateurs n'auront jamais besoin de cet outil, mais lorsque le besoin survient, les métaclasses offrent des solutions élégantes et puissantes. Elles sont utilisées pour journaliser les accès à des propriétés, rendre sûrs les environnements multi-threads, suivre la création d'objets, implémenter des singletons et bien d'autres tâches.

  Plus d'informations sont disponibles dans : Métaclasses.

méthode

  Fonction définie à l'intérieur d'une classe. Lorsqu'elle est appelée comme un attribut d'une instance de cette classe, la méthode reçoit l'instance en premier argument (qui, par convention, est habituellement nommé `self`). Voir function et nested scope.

ordre de résolution des méthodes

  Method Resolution Order is the order in which base classes are searched for a member during lookup. See The Python 2.3 Method Resolution Order for details of the algorithm used by the Python interpreter since the 2.3 release.

module

  Objet utilisé pour organiser une portion unitaire de code en Python. Les modules ont un espace de nommage et peuvent contenir n'importe quels objets Python. Charger des modules est appelé importer.

  Voir aussi paquet.

spécificateur de module

  Espace de nommage contenant les informations, relatives à l'importation, utilisées pour charger un module. C'est une instance de la classe `importlib.machinery.ModuleSpec`.

  See also Spécificateurs de modules.

MRO

  Voir ordre de résolution des méthodes.

mutable

  An object with state that is allowed to change during the course of the program. In multi-threaded programs, mutable objects that are shared between threads require careful synchronization to avoid race conditions. See also immutable, thread-safe, and concurrent modification.

n-uplet nommé

  Le terme "n-uplet nommé" s'applique à tous les types ou classes qui héritent de la classe `tuple` et dont les éléments indexables sont aussi accessibles en utilisant des attributs nommés. Les types et classes peuvent avoir aussi d'autres caractéristiques.

  Plusieurs types natifs sont appelés n-uplets, y compris les valeurs retournées par `time.localtime()` et `os.stat()`. Un autre exemple est `sys.float_info` :

      >>> sys.float_info[1]                   # indexed access
      1024
      >>> sys.float_info.max_exp              # named field access
      1024
      >>> isinstance(sys.float_info, tuple)   # kind of tuple
      True

  Some named tuples are built-in types (such as the above examples). Alternatively, a named tuple can be created from a regular class definition that inherits from `tuple` and that defines named fields. Such a class can be written by hand, or it can be created by inheriting `typing.NamedTuple`, or with the factory function `collections.namedtuple()`. The latter techniques also add some extra methods that may not be found in hand-written or built-in named tuples.

espace de nommage

  L'endroit où une variable est stockée. Les espaces de nommage sont implémentés avec des dictionnaires. Il existe des espaces de nommage globaux, natifs ou imbriqués dans les objets (dans les méthodes). Les espaces de nommage favorisent la modularité car ils permettent d'éviter les conflits de noms. Par exemple, les fonctions `builtins.open` et `os.open()` sont différenciées par leurs espaces de nom. Les espaces de nommage aident aussi à la lisibilité et la maintenabilité en rendant clair quel module implémente une fonction. Par exemple, écrire `random.seed()` ou `itertools.islice()` affiche clairement que ces fonctions sont implémentées respectivement dans les modules `random` et `itertools`.

paquet-espace de nommage

  A package which serves only as a container for subpackages. Namespace packages may have no physical representation, and specifically are not like a regular package because they have no `__init__.py` file.

  Namespace packages allow several individually installable packages to have a common parent package. Otherwise, it is recommended to use a regular package.

  For more information, see PEP 420 and Paquets espaces de nommage.

  Voir aussi module.

native code

  Code that is compiled to machine instructions and runs directly on the processor, as opposed to code that is interpreted or runs in a virtual machine. In the context of Python, native code typically refers to C, C++, Rust or Fortran code in extension modules that can be called from Python. See also extension module.

portée imbriquée

  Possibilité de faire référence à une variable déclarée dans une définition englobante. Typiquement, une fonction définie à l'intérieur d'une autre fonction a accès aux variables de cette dernière. Souvenez-vous cependant que cela ne fonctionne que pour accéder à des variables, pas pour les assigner. Les variables locales sont lues et assignées dans l'espace de nommage le plus proche. Tout comme les variables globales qui sont stockés dans l'espace de nommage global, le mot clef `nonlocal` permet d'écrire dans l'espace de nommage dans lequel est déclarée la variable.

nouvelle classe

  Old name for the flavor of classes now used for all class objects. In earlier Python versions, only new-style classes could use Python's newer, versatile features like `__slots__`, descriptors, properties, `__getattribute__()`, class methods, and static methods.

non-deterministic

  Behavior where the outcome of a program can vary between executions with the same inputs. In multi-threaded programs, non-deterministic behavior often results from race conditions where the relative timing or interleaving of threads affects the result. Proper synchronization using locks and other synchronization primitives helps ensure deterministic behavior.

objet

  N'importe quelle donnée comportant des états (sous forme d'attributs ou d'une valeur) et un comportement (des méthodes). C'est aussi (`object`) l'ancêtre commun à absolument toutes les nouvelles classes.

optimized scope

  A scope where target local variable names are reliably known to the compiler when the code is compiled, allowing optimization of read and write access to these names. The local namespaces for functions, generators, coroutines, comprehensions, and generator expressions are optimized in this fashion. Note: most interpreter optimizations are applied to all scopes, only those relying on a known set of local and nonlocal variable names are restricted to optimized scopes.

optional module

  An extension module that is part of the standard library, but may be absent in some builds of CPython, usually due to missing third-party libraries or because the module is not available for a given platform.

  See Requirements for optional modules for a list of optional modules that require third-party libraries.

paquet

  module Python qui peut contenir des sous-modules ou des sous-paquets. Techniquement, un paquet est un module qui possède un attribut `__path__`.

  Voir aussi paquet classique et namespace package.

parallelism

  Executing multiple operations at the same time (e.g. on multiple CPU cores). In Python builds with the global interpreter lock (GIL), only one thread runs Python bytecode at a time, so taking advantage of multiple CPU cores typically involves multiple processes (e.g. `multiprocessing`) or native extensions that release the GIL. In free-threaded Python, multiple Python threads can run Python code simultaneously on different cores.

paramètre

  Entité nommée dans la définition d'une fonction (ou méthode), décrivant un argument (ou dans certains cas des arguments) que la fonction accepte. Il existe cinq sortes de paramètres :

  - positional-or-keyword : l'argument peut être passé soit par sa position, soit en tant que argument nommé. C'est le type de paramètre par défaut. Par exemple, foo et bar dans l'exemple suivant :

        def func(foo, bar=None): ...

  - positional-only : définit un argument qui ne peut être fourni que par position. Les paramètres positional-only peuvent être définis en insérant un caractère "/" dans la liste de paramètres de la définition de fonction après eux. Par exemple : posonly1 et posonly2 dans le code suivant :

        def func(posonly1, posonly2, /, positional_or_keyword): ...

  - keyword-only : l'argument ne peut être fourni que nommé. Les paramètres keyword-only peuvent être définis en utilisant un seul paramètre var-positional, ou en ajoutant une étoile (`*`) seule dans la liste des paramètres avant eux. Par exemple, kw_only1 et kw_only2 dans le code suivant :

        def func(arg, *, kw_only1, kw_only2): ...

  - var-positional : une séquence d'arguments positionnels peut être fournie (en plus de tous les arguments positionnels déjà acceptés par d'autres paramètres). Un tel paramètre peut être défini en préfixant son nom par une `*`. Par exemple args ci-après :

        def func(*args, **kwargs): ...

  - var-keyword : une quantité arbitraire d'arguments peut être passée, chacun étant nommé (en plus de tous les arguments nommés déjà acceptés par d'autres paramètres). Un tel paramètre est défini en préfixant le nom du paramètre par `**`. Par exemple, kwargs ci-dessus.

  Les paramètres peuvent spécifier des arguments obligatoires ou optionnels, ainsi que des valeurs par défaut pour les arguments optionnels.

  Voir aussi argument dans le glossaire, la question sur la différence entre les arguments et les paramètres dans la FAQ, la classe `inspect.Parameter`, la section Définition de fonctions et la PEP 362.

entrée de chemin

  Emplacement dans le chemin des importations (import path en anglais, d'où le path) que le chercheur basé sur les chemins consulte pour trouver des modules à importer.

chercheur de chemins

  chercheur renvoyé par un appelable sur un `sys.path_hooks` (c'est-à-dire un point d'entrée pour la recherche dans path) qui sait où trouver des modules lorsqu'on lui donne une entrée de path.

  Voir `importlib.abc.PathEntryFinder` pour les méthodes qu'un chercheur d'entrée dans path doit implémenter.

point d'entrée pour la recherche dans path

  A callable on the `sys.path_hooks` list which returns a path entry finder if it knows how to find modules on a specific path entry.

chercheur basé sur les chemins

  L'un des chercheurs dans les méta-chemins par défaut qui cherche des modules dans un chemin des importations.

objet simili-chemin

  Objet représentant un chemin du système de fichiers. Un objet simili-chemin est un objet `str` ou un objet `bytes` représentant un chemin ou un objet implémentant le protocole `os.PathLike`. Un objet qui accepte le protocole `os.PathLike` peut être converti en un chemin `str` ou `bytes` du système de fichiers en appelant la fonction `os.fspath()`. `os.fsdecode()` et `os.fsencode()` peuvent être utilisées, respectivement, pour garantir un résultat de type `str` ou `bytes` à la place. A été Introduit par la PEP 519.

PEP

  Python Enhancement Proposal (Proposition d'amélioration de Python). Une PEP est un document de conception fournissant des informations à la communauté Python ou décrivant une nouvelle fonctionnalité pour Python, ses processus ou son environnement. Les PEP doivent fournir une spécification technique concise et une justification des fonctionnalités proposées.

  Les PEP sont censées être les principaux mécanismes pour proposer de nouvelles fonctionnalités majeures, pour recueillir les commentaires de la communauté sur une question et pour documenter les décisions de conception qui sont intégrées en Python. L’auteur du PEP est responsable de l’établissement d’un consensus au sein de la communauté et de documenter les opinions contradictoires.

  Voir la PEP 1.

portion

  Jeu de fichiers dans un seul dossier (pouvant être stocké sous forme de fichier zip) qui contribue à l'espace de nommage d'un paquet, tel que défini dans la PEP 420.

argument positionnel

  Voir argument.

API provisoire

  Une API provisoire est une API qui n'offre aucune garantie de rétrocompatibilité (la bibliothèque standard exige la rétrocompatibilité). Bien que des changements majeurs d'une telle interface ne soient pas attendus, tant qu'elle est étiquetée provisoire, des changements cassant la rétrocompatibilité (y compris sa suppression complète) peuvent survenir si les développeurs principaux le jugent nécessaire. Ces modifications ne surviendront que si de sérieux problèmes sont découverts et qu'ils n'avaient pas été identifiés avant l'ajout de l'API.

  Même pour les API provisoires, les changements cassant la rétrocompatibilité sont considérés comme des "solutions de dernier recours". Tout ce qui est possible sera fait pour tenter de résoudre les problèmes en conservant la rétrocompatibilité.

  Ce processus permet à la bibliothèque standard de continuer à évoluer avec le temps, sans se bloquer longtemps sur des erreurs d'architecture. Voir la PEP 411 pour plus de détails.

paquet provisoire

  Voir provisional API.

Python 3000

  Surnom donné à la série des Python 3.x (très vieux surnom donné à l'époque où Python 3 représentait un futur lointain). Aussi abrégé Py3k.

Pythonique

  Idée, ou bout de code, qui colle aux idiomes de Python plutôt qu'aux concepts communs rencontrés dans d'autres langages. Par exemple, il est idiomatique en Python de parcourir les éléments d'un itérable en utilisant `for`. Beaucoup d'autres langages n'ont pas cette possibilité, donc les gens qui ne sont pas habitués à Python utilisent parfois un compteur numérique à la place :

      for i in range(len(food)):
          print(food[i])

  Plutôt qu'utiliser la méthode, plus propre et élégante, donc Pythonique :

      for piece in food:
          print(piece)

nom qualifié

  Nom, comprenant des points, montrant le "chemin" de l'espace de nommage global d'un module vers une classe, fonction ou méthode définie dans ce module, tel que défini dans la PEP 3155. Pour les fonctions et classes de premier niveau, le nom qualifié est le même que le nom de l'objet :

      >>> class C:
      ...     class D:
      ...         def meth(self):
      ...             pass
      ...
      >>> C.__qualname__
      'C'
      >>> C.D.__qualname__
      'C.D'
      >>> C.D.meth.__qualname__
      'C.D.meth'

  Lorsqu'il est utilisé pour nommer des modules, le nom qualifié complet (fully qualified name - FQN en anglais) signifie le chemin complet (séparé par des points) vers le module, incluant tous les paquets parents. Par exemple : `email.mime.text` :

      >>> import email.mime.text
      >>> email.mime.text.__name__
      'email.mime.text'

race condition

  A condition of a program where the its behavior depends on the relative timing or ordering of events, particularly in multi-threaded programs. Race conditions can lead to non-deterministic behavior and bugs that are difficult to reproduce. A data race is a specific type of race condition involving unsynchronized access to shared memory. The LBYL coding style is particularly susceptible to race conditions in multi-threaded code. Using locks and other synchronization primitives helps prevent race conditions.

nombre de références

  The number of references to an object. When the reference count of an object drops to zero, it is deallocated. Some objects are immortal and have reference counts that are never modified, and therefore the objects are never deallocated. Reference counting is generally not visible to Python code, but it is a key element of the CPython implementation. Programmers can call the `sys.getrefcount()` function to return the reference count for a particular object.

  In CPython, reference counts are not considered to be stable or well-defined values; the number of references to an object, and how that number is affected by Python code, may be different between versions.

paquet classique

  paquet traditionnel, tel qu'un dossier contenant un fichier `__init__.py`.

  Voir aussi paquet-espace de nommage.

reentrant

  A property of a function or lock that allows it to be called or acquired multiple times by the same thread without causing errors or a deadlock.

  For functions, reentrancy means the function can be safely called again before a previous invocation has completed, which is important when functions may be called recursively or from signal handlers. Thread-unsafe functions may be non-deterministic if they're called reentrantly in a multithreaded program.

  For locks, Python's `threading.RLock` (reentrant lock) is reentrant, meaning a thread that already holds the lock can acquire it again without blocking. In contrast, `threading.Lock` is not reentrant - attempting to acquire it twice from the same thread will cause a deadlock.

  See also lock and deadlock.

REPL

  An acronym for the "read–eval–print loop", another name for the interactive interpreter shell.

__slots__

  Déclaration dans une classe qui économise de la mémoire en pré-allouant de l'espace pour les attributs des instances et qui élimine le dictionnaire (des attributs) des instances. Bien que populaire, cette technique est difficile à maîtriser et devrait être réservée à de rares cas où un grand nombre d'instances dans une application devient un sujet critique pour la mémoire.

séquence

  An iterable which supports efficient element access using integer indices via the `__getitem__()` special method and defines a `__len__()` method that returns the length of the sequence. Some built-in sequence types are `list`, `str`, `tuple`, and `bytes`. Note that `dict` also supports `__getitem__()` and `__len__()`, but is considered a mapping rather than a sequence because the lookups use arbitrary hashable keys rather than integers.

  The `collections.abc.Sequence` abstract base class defines a much richer interface that goes beyond just `__getitem__()` and `__len__()`, adding `count()`, `index()`, `__contains__()`, and `__reversed__()`. Types that implement this expanded interface can be registered explicitly using `register()`. For more documentation on sequence methods generally, see Common Sequence Operations.

ensemble en compréhension (ou ensemble en intension)

  Une façon compacte de traiter tout ou partie des éléments d'un itérable et de renvoyer un set avec les résultats. `results = {c for c in 'abracadabra' if c not in 'abc'}` génère l'ensemble contenant les lettres « r » et « d » `{'r', 'd'}`. Voir Agencements des listes, ensembles et dictionnaires.

distribution simple

  Forme de distribution, comme les fonction génériques, où l'implémentation est choisie en fonction du type d'un seul argument.

tranche

  An object of type `slice`, used to describe a portion of a sequence. A slice object is created when using the slicing form of subscript notation, with colons inside square brackets, such as in `variable_name[1:3:5]`.

soft deprecated

  A soft deprecated API should not be used in new code, but it is safe for already existing code to use it. The API remains documented and tested, but will not be enhanced further.

  Soft deprecation, unlike normal deprecation, does not plan on removing the API and will not emit warnings.

  See PEP 387: Soft Deprecation.

méthode spéciale

  (special method en anglais) Méthode appelée implicitement par Python pour exécuter une opération sur un type, comme une addition. De telles méthodes ont des noms commençant et terminant par des doubles tirets bas. Les méthodes spéciales sont documentées dans Méthodes spéciales.

standard library

  The collection of packages, modules and extension modules distributed as a part of the official Python interpreter package. The exact membership of the collection may vary based on platform, available system libraries, or other criteria. Documentation can be found at La bibliothèque standard.

  See also `sys.stdlib_module_names` for a list of all possible standard library module names.

instruction

  Une instruction (statement en anglais) est un composant d'un "bloc" de code. Une instruction est soit une expression, soit une ou plusieurs constructions basées sur un mot-clé, comme `if`, `while` ou `for`.

static type checker

  An external tool that reads Python code and analyzes it, looking for issues such as incorrect types. See also type hints and the `typing` module.

stdlib

  An abbreviation of standard library.

référence forte

  In Python's C API, a strong reference is a reference to an object which is owned by the code holding the reference. The strong reference is taken by calling `Py_INCREF()` when the reference is created and released with `Py_DECREF()` when the reference is deleted.

  Une référence forte est créée à l'aide de la fonction `Py_NewRef()`. Il faut normalement appeler `Py_DECREF()` dessus avant de sortir de sa portée lexicale, sans quoi il y a une fuite de référence.

  Voir aussi référence empruntée.

subscript

  The expression in square brackets of a subscription expression, for example, the `3` in `items[3]`. Usually used to select an element of a container. Also called a key when subscripting a mapping, or an index when subscripting a sequence.

synchronization primitive

  A basic building block for coordinating (synchronizing) the execution of multiple threads to ensure thread-safe access to shared resources. Python's `threading` module provides several synchronization primitives including `Lock`, `RLock`, `Semaphore`, `Condition`, `Event`, and `Barrier`. Additionally, the `queue` module provides multi-producer, multi-consumer queues that are especially useful in multithreaded programs. These primitives help prevent race conditions and coordinate thread execution. See also lock.

t-string
t-strings

  String literals prefixed with `t` or `T` are commonly called "t-strings" which is short for template string literals.

encodages de texte

  Une chaîne de caractères en Python est une suite de points de code Unicode (dans l'intervalle `U+0000`--`U+10FFFF`). Pour stocker ou transmettre une chaîne, il est nécessaire de la sérialiser en suite d'octets.

  Sérialiser une chaîne de caractères en une suite d'octets s'appelle « encoder » et recréer la chaîne à partir de la suite d'octets s'appelle « décoder ».

  Il existe de multiples codecs pour la sérialisation de texte, que l'on regroupe sous l'expression « encodages de texte ».

fichier texte

  Objet fichier capable de lire et d'écrire des objets `str`. Souvent, un fichier texte (text file en anglais) accède en fait à un flux de donnée en octets et gère l'encodage de texte automatiquement. Des exemples de fichiers textes sont les fichiers ouverts en mode texte (`'r'` ou `'w'`), `sys.stdin`, `sys.stdout` et les instances de `io.StringIO`.

  Voir aussi fichier binaire pour un objet fichier capable de lire et d'écrire des objets octets-compatibles.

thread state

  The information used by the CPython runtime to run in an OS thread. For example, this includes the current exception, if any, and the state of the bytecode interpreter.

  Each thread state is bound to a single OS thread, but threads may have many thread states available. At most, one of them may be attached at once.

  An attached thread state is required to call most of Python's C API, unless a function explicitly documents otherwise. The bytecode interpreter only runs under an attached thread state.

  Each thread state belongs to a single interpreter, but each interpreter may have many thread states, including multiple for the same OS thread. Thread states from multiple interpreters may be bound to the same thread, but only one can be attached in that thread at any given moment.

  See Thread State and the Global Interpreter Lock for more information.

thread-safe

  A module, function, or class that behaves correctly when used by multiple threads concurrently. Thread-safe code uses appropriate synchronization primitives like locks to protect shared mutable state, or is designed to avoid shared mutable state entirely. In the free-threaded build, built-in types like `dict`, `list`, and `set` use internal locking to make many operations thread-safe, although thread safety is not necessarily guaranteed. Code that is not thread-safe may experience race conditions and data races when used in multi-threaded programs.

token

  A small unit of source code, generated by the lexical analyzer (also called the tokenizer). Names, numbers, strings, operators, newlines and similar are represented by tokens.

  The `tokenize` module exposes Python's lexical analyzer. The `token` module contains information on the various types of tokens.

chaîne entre triple guillemets

  Chaîne qui est délimitée par trois guillemets simples (`'`) ou trois guillemets doubles (`"`). Bien qu'elle ne fournisse aucune fonctionnalité qui ne soit pas disponible avec une chaîne entre guillemets, elle est utile pour de nombreuses raisons. Elle vous autorise à insérer des guillemets simples et doubles dans une chaîne sans avoir à les protéger et elle peut s'étendre sur plusieurs lignes sans avoir à terminer chaque ligne par un `\`. Elle est ainsi particulièrement utile pour les chaînes de documentation (docstrings).

type

  The type of a Python object determines what kind of object it is; every object has a type. An object's type is accessible as its `__class__` attribute or can be retrieved with `type(obj)`.

alias de type

  Synonyme d'un type, créé en affectant le type à un identifiant.

  Les alias de types sont utiles pour simplifier les indications de types. Par exemple :

      def remove_gray_shades(
              colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
          pass

  pourrait être rendu plus lisible comme ceci :

      Color = tuple[int, int, int]

      def remove_gray_shades(colors: list[Color]) -> list[Color]:
          pass

  Voir `typing` et la PEP 484, qui décrivent cette fonctionnalité.

indication de type

  L'annotation qui spécifie le type attendu pour une variable, un attribut de classe, un paramètre de fonction ou une valeur de retour.

  Type hints are optional and are not enforced by Python but they are useful to static type checkers. They can also aid IDEs with code completion and refactoring.

  Les indications de type de variables globales, d'attributs de classe et de fonctions, mais pas de variables locales, peuvent être consultées en utilisant `typing.get_type_hints()`.

  Voir `typing` et la PEP 484, qui décrivent cette fonctionnalité.

retours à la ligne universels

  Une manière d'interpréter des flux de texte dans lesquels sont reconnues toutes les fins de ligne suivantes : la convention Unix `'\n'`, la convention Windows `'\r\n'` et l'ancienne convention Macintosh `'\r'`. Voir la PEP 278 et la PEP 3116, ainsi que la fonction `bytes.splitlines()` pour d'autres usages.

annotation de variable

  annotation d'une variable ou d'un attribut de classe.

  Lorsque vous annotez une variable ou un attribut de classe, l'affectation est facultative :

      class C:
          field: 'annotation'

  Les annotations de variables sont généralement utilisées pour des indications de types : par exemple, cette variable devrait prendre des valeurs de type `int` :

      count: int = 0

  La syntaxe d'annotation de variable est expliquée dans la section Les assignations annotées.

  Reportez-vous à annotation de fonction, à la PEP 484 et à la PEP 526 qui décrivent cette fonctionnalité. Voir aussi Bonnes pratiques concernant les annotations sur les bonnes pratiques concernant les annotations.

environnement virtuel

  Environnement d'exécution isolé (en mode coopératif) qui permet aux utilisateurs de Python et aux applications d'installer et de mettre à jour des paquets sans interférer avec d'autres applications Python fonctionnant sur le même système.

  Voir aussi `venv`.

machine virtuelle

  Ordinateur défini entièrement par du logiciel. La machine virtuelle (virtual machine) de Python exécute le code intermédiaire produit par le compilateur de bytecode.

walrus operator

  A light-hearted way to refer to the assignment expression operator `:=` because it looks a bit like a walrus if you turn your head.

Le zen de Python

  Liste de principes et de préceptes utiles pour comprendre et utiliser le langage. Cette liste peut être obtenue en tapant "`import this`" dans une invite Python interactive.