Comment réparer : SyntaxError : l’argument de position suit l’argument de mot-clé
Une erreur que vous pouvez rencontrer en Python est :
SyntaxError: positional argument follows keyword argument
Cette erreur se produit lorsque vous utilisez un argument de position dans une fonction après avoir utilisé un argument de mot-clé .
Voici la différence entre les deux :
Les arguments positionnels sont ceux qui n’ont pas de « mot-clé » devant eux.
- Exemple : ma_fonction(2, 2)
Les arguments de mots-clés sont ceux qui comportent un « mot-clé » devant eux.
- Exemple : ma_fonction(a=2, b=2)
Si vous utilisez un argument de position après un argument de mot-clé, Python générera une erreur.
- Exemple : ma_fonction(a=2, 2)
L’exemple suivant montre comment cette erreur peut se produire dans la pratique.
Exemple : un argument de position suit un argument de mot-clé
Supposons que nous ayons la fonction suivante en Python qui multiplie deux valeurs puis divise par une troisième :
def do_stuff(a, b):
return a * b / c
Les exemples suivants montrent des manières valides et non valides d’utiliser cette fonction :
Voie valide n°1 : tous les arguments positionnels
Le code suivant montre comment utiliser notre fonction avec tous les arguments positionnels :
do_stuff(4, 10, 5)
8.0
Aucune erreur n’est générée car Python sait exactement quelles valeurs utiliser pour chaque argument de la fonction.
Méthode valide n°2 : tous les arguments de mots clés
Le code suivant montre comment utiliser notre fonction avec tous les arguments de mots clés :
do_stuff(a=4, b=10, c=5)
8.0
Encore une fois, aucune erreur n’est générée car Python sait exactement quelles valeurs utiliser pour chaque argument de la fonction.
Méthode valide n°3 : arguments de position avant les arguments de mots clés
Le code suivant montre comment utiliser notre fonction avec les arguments de position utilisés avant les arguments de mots-clés :
do_stuff(4, b=10, c=5)
8.0
Aucune erreur n’est générée car Python sait que la valeur 4 doit être attribuée à l’argument a .
Manière invalide : arguments de position après les arguments de mots clés
Le code suivant montre comment nous pouvons tenter d’utiliser la fonction avec des arguments de position utilisés après les arguments de mots-clés :
do_stuff(a=4, 10, 5)
SyntaxError: positional argument follows keyword argument
Une erreur est générée car nous avons utilisé des arguments de position après les arguments de mots-clés.
Plus précisément, Python ne sait pas si les valeurs 10 et 5 doivent être affectées aux arguments b ou c , il est donc incapable d’exécuter la fonction.
Ressources additionnelles
Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :
Comment réparer KeyError dans Pandas
Comment réparer : ValueError : impossible de convertir le float NaN en entier
Comment réparer : ValueError : les opérandes n’ont pas pu être diffusés avec les formes