2 votes

TypeError : obtention de plusieurs valeurs pour l'argument lors du passage dans *args

Chaque fois que j'essaie d'attribuer une valeur à un argument par défaut, lorsque j'utilise également *args, l'erreur est soulevée : TypeError : "got multiple values for argument".

def test(a,b, c=3, *args):
    pass

args = [1,2,3]
test(1,2,c=3, *args)

.

TypeError: test() got multiple values for argument 'c'

Au début, je pensais avoir trouvé la réponse ici : TypeError : a obtenu plusieurs valeurs pour l'argument Mais il s'avère que le premier argument de cette requête était explicitement écrasé, donc dans mon propre exemple, cela reviendrait à dire test(1,2, a=3, *args) où a prendrait les valeurs 1 et 3. Cependant, ici, ce n'est pas le cas.

Cette question pourrait être un doublon de la précédente. "got multiple values for keyword argument" lors de l'utilisation de *args, **kwargs dans une fonction python mais honnêtement, il y a beaucoup plus de détails dans cette question qui dépasse le cadre de ce que je demande et je ne peux vraiment pas y donner suite. Donc, s'il s'agit d'un doublon, alors il s'agit de tout extraire de l'autre question jusqu'au problème réel lui-même.

6voto

Hippolippo Points 185

Vous devez l'échanger pour que le c=3 est le dernier car python exige que les arguments optionnels soient à la fin. Le code fonctionne quand il est fait comme ceci :

def test(a,b, *args, c=3):
    pass

args = [1,2,3]
test(1,2, *args, c=3)

3voto

yatu Points 39897

Vous spécifiez un argument de type mot-clé et après une liste d'arguments positionnels, c'est pourquoi vous obtenez l'erreur. Spécifiez d'abord tous les arguments positionnels et ensuite les arguments mots-clés :

def test(a,b, *args, c=3):
    print(args)

test(1,2,c=3, *args)
# (1, 2, 3)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X