Python Language TypeErrors


Exemple

Ces exceptions sont provoquées lorsque le type d'un objet doit être différent

TypeError: [définition / méthode] prend? arguments positionnels mais? a été donné

Une fonction ou une méthode a été appelée avec plus (ou moins) d’arguments que ceux qu’elle peut accepter.

Exemple

Si plus d'arguments sont donnés:

def foo(a): return a
foo(a,b,c,d) #And a,b,c,d are defined

Si moins d'arguments sont donnés:

def foo(a,b,c,d): return a += b + c + d
foo(a) #And a is defined

Note : si vous voulez utiliser un nombre inconnu d’arguments, vous pouvez utiliser *args ou **kwargs . Voir * args et ** kwargs


TypeError: type (s) d'opérande non pris en charge pour [opérande]: '???' et '???'

Certains types ne peuvent pas être utilisés ensemble, selon l'opérande.

Exemple

Par exemple: + est utilisé pour concaténer et ajouter, mais vous ne pouvez en utiliser aucun pour les deux types. Par exemple, essayer de créer un set en concaténant ( + ing) 'set1' et 'tuple1' donne l'erreur. Code:

set1, tuple1 = {1,2}, (3,4)
a = set1 + tuple1

Certains types (ex: int et string ) utilisent à la fois + mais pour des choses différentes:

b = 400 + 'foo'

Ou ils ne peuvent même pas être utilisés pour rien:

c = ["a","b"] - [1,2]

Mais vous pouvez par exemple ajouter un float à un int :

d = 1 + 1.0

Erreur-type: '???' l'objet n'est pas itérable / inscriptible:

Pour qu'un objet puisse être itéré, il peut prendre des index séquentiels à partir de zéro jusqu'à ce que les index ne soient plus valides et qu'un IndexError soit généré (plus techniquement: il doit avoir une méthode __iter__ qui retourne un __iterator__ ou qui définit une méthode __getitem__ ce qui a été mentionné précédemment).

Exemple

Ici, nous disons que la bar est le point zéro de 1. Nonsense:

foo = 1
bar = foo[0]

Ceci est une version plus discrète: Dans cet exemple for tente de mettre x à amount[0] , le premier élément dans un itérables mais il ne peut pas parce que le montant est un entier:

amount = 10
for x in amount: print(x)

Erreur-type: '???' l'objet n'est pas appelable

Vous définissez une variable et l'appelez plus tard (comme ce que vous faites avec une fonction ou une méthode)

Exemple

foo = "notAFunction"
foo()