L'instruction assert en Python

Article publié le et mis à jour le .

L'instruction assert en Python

En Python, l’instruction assert permettent de s’assurer qu’une condition est remplie avant de poursuivre l’exécution d’un script. Elle est utilisée principalement lors du débogage du code.

age = -1

assert age < 0, "L'âge ne peut pas être négatif"

C’est quoi assert en Python ?

L’instruction assert vérifie qu’une condition est vraie sinon elle lève une erreur avec un message d’erreur spécifique s’il est spécifié.

assert condition
assert condition, message
  • Si condition est fausse, une erreur AssertionError est levée, si elle est vrai, on continue l’éxécution de notre script.

  • Le message est optionnel, on aura un message personnalisé si une chaîne de caractères est fournie, sinon une simple AssertionError

assert est un mot clé qui permet de faire la même chose qu’avoir un if et lever une erreur avec raise :

if not condition:
  raise AssertionError(message)

La seule différence est que assert ne s’exécute qu’en mode débogage contrairement à raise ... qui s’exécute tout le temps peut importe si on est en mode __debug__ ou pas.

En effet, l’instruction assert ne s’exécute que si notre script Python est en mode __debug__. Par défaut c’est mode est True. Vous pouvez le vérifier en lançant un interpréteur Python et en affichant la valeur de cette variable.

$ python
Python 3.10.9 (main, ...) [...] on ...
>>> __debug__
True

Pour désactiver le mode __debug__, il suffit de lancer python avec le flag -O :

$ python -O
Python 3.10.9 (main, ...) [...] on ...
>>> __debug__
False

Pour être plus précis on peut donc dire que assert est une sorte de macro pour le code suivant :

if __debug__:
  if not condition:
    raise AssertionError(message)

Quand utiliser assert en Python ?

On utilise l’instruction assert principalement quand on debug du code. Il utiliser l’instruction assert avec parcimonie et ne pas oublier de les retirer une fois le programme débogué.