Erreur Python : NameError
NSI Première
Définition
L'erreur `NameError` signifie que Python rencontre un nom (variable, fonction...) qu'il ne connaît pas : il n'a jamais été défini, ou pas encore au moment où on l'utilise. Le message exact est de la forme `NameError: name 'x' is not defined`. La cause la plus fréquente est une faute de frappe dans le nom, ou l'utilisation d'une variable avant de lui avoir donné une valeur.
Exemple corrigé
Énoncé
Voici un code qui déclenche cette erreur :
```python
moyenne = (12 + 15 + 9) / 3
print("La moyenne est :", moyene)
```
Python affiche :
```
NameError: name 'moyene' is not defined
```
Solution
La cause est une faute de frappe : la variable a été créée sous le nom `moyenne` (deux « n »), mais on essaie de l'afficher avec `moyene` (un seul « n »). Pour Python, `moyene` est un nom totalement inconnu.
Code corrigé :
```python
moyenne = (12 + 15 + 9) / 3
print("La moyenne est :", moyenne)
```
Le bon réflexe : repérer le nom entre guillemets dans le message d'erreur et vérifier qu'il est écrit exactement comme là où la variable a été définie.
Erreurs classiques
- Confondre `NameError` (le nom n'existe pas du tout) et `UnboundLocalError` (le nom existe mais on l'utilise avant de l'affecter dans une fonction).
- Oublier les guillemets autour d'une chaîne : `print(bonjour)` cherche une variable `bonjour`, alors que `print("bonjour")` affiche le texte.
- Appeler une fonction avant de l'avoir définie, ou utiliser un module sans l'avoir importé (`import`).