'NoneType' object is not subscriptable
Explication
Causes courantes
- **Fonction qui renvoie `None`** (oubli de `return`) dont vous indexez le résultat. - **`dict.get(cle)`** sur une clé absente renvoie `None`, puis `resultat["autre"]`. - **`re.match()` / `re.search()`** renvoient `None` s'il n'y a pas de correspondance, puis `.group()` ou `[0]`. - **Une recherche en base ou via une API** sans résultat qui renvoie `None`.
1. Vérifiez la valeur avant de l'indexer
user = trouver_user(99)
if user is not None:
print(user["nom"])
else:
print("Utilisateur introuvable")
2. Renvoyez explicitement quelque chose
def trouver_user(uid):
for u in users:
if u["id"] == uid:
return u
return None # explicite : on documente l'absence
3. Cas des expressions régulières
import re
m = re.search(r"(\d{4})", texte)
if m: # ne pas faire m[0] directement
annee = m.group(1)
4. En production : remontez à la source
Plutôt que d'empiler les if x is not None, corrigez l'endroit qui produit le None (clé manquante, requête vide). Le message ne dit pas quelle variable est None : inspectez la ligne signalée et affichez repr(variable) juste avant.
Comment prevenir cette erreur
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacter