Python : comment éviter l'erreur Positional argument follows keyword argument ?

Comme la plupart des langages de programmation, le langage Python utilise des fonctions. Les utiliser permet de factoriser son code et de mieux l'organiser. Cela permet également de choisir le moment où la fonction est appelée. C'est aujourd'hui une base de la programmation. Une fonction peut prendre en paramètres plusieurs arguments possibles et peut retourner un élément. Le message d'erreur "Positional argument follows keyword argument" est lié à la manière dont on a appelé la fonction.

Dans le langage Python, il existe trois types d'arguments possibles pour une fonction. Le premier est l'argument positionné. C'est la position de l'argument qui définit comment la fonction va le recevoir. Le premier paramètre sera transmis à la fonction comme étant le premier argument, etc. Le deuxième type est l'argument optionnel. C'est un argument qui a une valeur par défaut déclarée. Si on ne le précise pas à la fonction, ce sera alors la valeur par défaut qui sera prise en compte. Le dernier type d'argument est l'argument nommé. On définit un mot-clé qui sera lu par la fonction pour retrouver l'argument dont elle a besoin. Pour gérer les arguments nommés, il faut dans la fonction définir un paramètre spécifique. En le précédant de la mention "*" (par exemple *args), on obtient un tuple. Il faut alors connaître précisément la position des arguments. Si on utilise les caractères "**", on obtient alors un dictionnaire qui permet de gérer plus facilement les paramètres nommés.

def ma_fonction(argument1, argument2 = 'test', **args)
	print('Argument 1 : ' + argument1)
	print(Argument 2 : ' + argument 2)
	print('Argument opion : ( + argument['option'])

//Appel
ma_fonction('maValeur', ['option' = 'monOption'])

Le message d'erreur vient du fait que vous n'avez pas respecté l'ordre des arguments dans l'appel de la fonction. Les arguments positionnés doivent être mis en premier. Les arguments nommés sont les derniers à être ajoutés lors d'un appel vers la fonction. Faites bien attention quand vous copiez directement le prototype d'une fonction. Les arguments optionnels dont vous n'avez pas besoin ne doivent être gardés que si vous avez une valeur différente à préciser, ou que vous avez un argument positionné qui suit. On utilise alors la valeur par défaut pour que la prise en compte du paramètre ne change pas le comportement de la fonction.

Autour du même sujet

Python