TypeError: a plusieurs valeurs pour l'argument
J'ai lu les autres discussions qui avaient à faire avec cette erreur, et il semble que mon problème a un intéressant différence près que tous les courriers que j'ai lu jusqu'à présent, à savoir, tous les autres postes ont jusqu'à présent l'erreur en ce qui concerne un utilisateur créé classe ou d'une interface de ressources système. Je suis confronté à ce problème lors de l'appel d'une fonction, je ne peux pas comprendre ce que ça pourrait être pour. Des idées?
BOX_LENGTH = 100
turtle.speed(0)
fill = 0
for i in range(8):
fill += 1
if fill % 2 == 0:
Horizontol_drawbox(BOX_LENGTH, fillBox = False)
else:
Horizontol_drawbox(BOX_LENGTH, fillBox = True)
for i in range(8):
fill += 1
if fill % 2 == 0:
Vertical_drawbox(BOX_LENGTH,fillBox = False)
else:
Vertical_drawbox(BOX_LENGTH,fillBox = True)
Message d'erreur:
Horizontol_drawbox(BOX_LENGTH, fillBox = True)
TypeError: Horizontol_drawbox() got multiple values for argument 'fillBox'
- Qu'est-ce que la déclaration de la
Horizontol_drawbox
fonction? Si elle commence avecfillBox
, alors que c'est la faute (attribué un temps de position argument, et une deuxième fois avec l'argument mot-clé).
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe quand un mot-clé argument est spécifié que remplace une position d'argument. Par exemple, imaginons une fonction qui dessine un cadre de couleur. La fonction permet de choisir la couleur à utiliser et les délégués du dessin de la boîte à une autre fonction, le relais de tous les arguments supplémentaires.
L'appel
va échouer parce que les deux valeurs sont assignées à
color
:"blellow"
que la position et"green"
comme mot-clé. (painter.draw_box
est censé accepter leheight
etwidth
arguments).C'est facile à voir dans l'exemple, mais bien sûr si l'on se mélange les arguments lors de l'appel, il peut ne pas être facile à déboguer:
Ici,
color
est attribué20
, puisargs=[30]
etcolor
est de nouveau affecté"green"
.color
argument. Le problème était un peu différent - monmodel_matrix
argument est devenu le mot clé seule, et un code existant s'il avait passé comme une position d'argument. La nouvelle API m'attendais àcolor
, et a obtenu une matrice de 4x4 au lieu.When a keyword argument is specified that overwrites a positional argument
. Mais pourquoi ces derniers, on peut travailler? Quelle est la règle quand python affecter les arguments. Je vous remercie.J'ai eu le même problème qui est vraiment facile à faire, mais il m'a fallu un certain temps pour voir à travers.
J'avais copié la déclaration à l'endroit où je l'utilise et avait quitté le 'soi' argument là, mais il m'a fallu des âges pour s'en rendre compte.
J'avais
mais il faut avoir été
self
avec le nom de la classe. 😉Cela se produit également si vous oubliez
self
déclaration à l'intérieur des méthodes de la classe.Exemple:
Échoue en l'appelant comme
self.is_overlapping(x1=2, x2=4, y1=3, y2=5)
avec:
ŒUVRES:
self
argument à l'intérieur de la déclaration de la fonction. c'est à dire ce qui devrait êtredef myFunction(self, a, b, c='123')
a été écrit commedef myFunction(a, b, c='123')
. Et parce queb
prend une liste etc
prend un scalaire, lorsque manquant auto les arguments foiré et finalement l'entrée deb
va àc
, causant la "plusieurs arguments d'erreur". Je fais cette erreur parce que j'ai testé cette méthode interne en dehors de la classe et oublier d'ajouter laself
de retour dans. Espérons utile pour quelqu'un d'autre!Mon problème était similaire à Q---dix, mais dans mon cas, c'était que j'avais oublié de fournir l'auto argument à une fonction de classe:
Devrait devenir
Cette mauvaise mise en œuvre est difficile à voir lors de l'appel de la méthode de classe comme:
Qui donnera un
TypeError: got multiple values for argument
. Heureusement, le reste des réponses ici sont assez clair pour toute personne d'être en mesure de comprendre rapidement et de corriger l'erreur. Si non, espère que cette réponse vous aide!Pour faire simple vous ne pouvez pas effectuer les opérations suivantes:
Parce que vous passez la variable " y " dans la fonction deux fois: une fois en tant que kwargs et une fois en tant que déclaration de fonction.
J'ai été amené ici pour une raison qui n'est pas mentionné dans les réponses, donc pour sauver les autres de la difficulté:
L'erreur se produit également si les arguments de la fonction ont changé l'ordre - pour la même raison que dans l'acceptation réponse: les arguments de position en contradiction avec le mot-clé arguments.
Dans mon cas, c'était parce que l'argument de l'ordre de les Pandas
set_axis
fonction changé entre 0,20 et 0,22:À l'aide de l'communément trouvé des exemples pour set_axis résultats de cette erreur déroutant, car lorsque vous composez le:
avant de 0,22,
['a', 'b', 'c']
est affectée à l'axe parce que c'est le premier argument, et puis la position argument fournit des "valeurs multiples".