# Constantes natives

Un petit nombre de constantes existent dans le namespace natif. Elles sont :

`False`

  La valeur fausse du type `bool`. Les assignations à `False` ne sont pas autorisées et lèvent une `SyntaxError`.

`True`

  La valeur vraie du type `bool`. Les assignations à `True` ne sont pas autorisées et lèvent une `SyntaxError`.

`None`

  Objet utilisé fréquemment pour représenter l'absence de valeur, comme lorsque des arguments par défaut ne sont pas passés à une fonction. Les assignations à `None` ne sont pas autorisées et lèvent une `SyntaxError`. `None` est la seule instance du type `NoneType`.

`NotImplemented`

  Valeur spéciale qui devrait être renvoyée par les méthodes magiques à deux opérandes (comme `__eq__()`, `__lt__()`, `__add__()`, `__rsub__()`, etc.) pour indiquer que l'opération n'est pas implémentée pour l'autre type ; peut être renvoyée par les méthodes magiques augmentées à deux opérandes (comme `__imul__()`, `__iand__()`, etc.) avec le même objectif. Elle ne doit pas être évaluée comme booléen. `NotImplemented` est la seule instance de `types.NotImplementedType`.

  Note

  Lorsqu'une méthode à deux opérandes renvoie `NotImplemented`, l'interpréteur essaye d'exécuter l'opération réfléchie sur l'autre type (il existe d'autres mécanismes de fallback, en fonction de l'opérateur). Si toutes les tentatives renvoient `NotImplemented`, l'interpréteur lève une exception appropriée. Renvoyer `NotImplemented` à tort donne lieu à un message d'erreur peu clair ou au renvoi de la valeur `NotImplemented` pour le code Python.

  Voir Implémentation des opérations arithmétiques pour des exemples.

  Note

  `NotImplementedError` et `NotImplemented` ne sont pas interchangeables, même s'ils ont un nom et un objectif similaire. Voir `NotImplementedError` pour savoir quand l'utiliser.

  Modifié dans la version 3.9: évaluer `NotImplemented` dans un contexte booléen est obsolète. Python l'évalue aujourd'hui à `True` mais émet un `DeprecationWarning`. Il lèvera une `TypeError` dans une version ultérieure de Python.

`Ellipsis`

  Identique au littéral points de suspension ("`...`"). Valeur spéciale utilisée principalement de manière conjointe avec la syntaxe de découpage (slicing) étendu pour les conteneurs personnalisés. `Ellipsis` est la seule instance de `types.EllipsisType`.

`__debug__`

  Cette constante est vraie si Python n'a pas été démarré avec une option `-O`. Voir aussi l'expression `assert`.

Note

Les noms `None`, `False`, `True` et `__debug__` ne peuvent pas être réassignés (des assignations à ces noms, ou aux noms de leurs attributs, lèvent une `SyntaxError`), donc ils peuvent être considérés comme des "vraies" constantes.

## Constantes ajoutées par le module `site`

Le module `site` (qui est importé automatiquement au démarrage, sauf si l'option de ligne de commande `-S` est donnée ajoute un certain nombre de constantes au namespace natif. Elles sont utiles pour l'interpréteur interactif et ne devraient pas être utilisées par des programmes.

`quit`(code=None)
`exit`(code=None)

  Objets qui, lorsqu'ils sont représentés, affichent un message comme "Use quit() or Ctrl-D (i.e. EOF) to exit", et lorsqu'ils sont appelés, lèvent un `SystemExit` avec le code de retour spécifié.

`copyright`
`credits`

  Objets qui, lorsqu'ils sont affichés ou appelés, affichent le copyright ou les crédits, respectivement.

`license`

  Objet qui, lorsqu'il est affiché, affiche un message comme "Type license() to see the full license text", et lorsqu'il est appelé, affiche le texte complet de la licence dans un style paginé (un écran à la fois).