88 votes

comment savoir si une variable est un tuple, une chaîne de caractères ou un nombre entier ?

J'essaie de résoudre un problème d'incompatibilité de type lors de l'ajout d'une chaîne à une autre chaîne dans une opération de concaténation.

En fait, l'erreur renvoyée est un TypeError (on ne peut pas concaténer une chaîne et un tuple) ; j'aimerais donc savoir où j'ai attribué une valeur sous forme de tuple au lieu de chaîne.

Toutes les valeurs que j'assigne sont des chaînes de caractères, je dois donc déterminer d'où vient le tuple. J'espérais donc qu'il existe un moyen en Python de trouver ce qui est contenu dans une variable et quel est son type.

Jusqu'à présent, nous avons utilisé pdb J'ai pu vérifier le contenu des variables, et j'obtiens correctement les valeurs auxquelles je m'attends ; mais j'aimerais aussi connaître le type de la variable (par logique, si le compilateur est capable de soulever une erreur de type, cela signifie qu'il sait ce qu'il y a à l'intérieur d'une variable et si c'est compatible avec l'opération à effectuer ; il doit donc y avoir un moyen de sortir cette valeur/flag).

Existe-t-il un moyen d'imprimer le type d'une variable en python ?

BTW, j'ai essayé de changer toutes mes variables pour qu'elles soient explicitement des chaînes de caractères, mais ce n'est pas faisable de forcer str (myvar) Je ne peux donc pas utiliser le type chaîne partout où j'utilise des chaînes de caractères.

183voto

Nicolae Dascalu Points 1329
isinstance(obj, tuple)
isinstance(obj, basestring)
isinstance(obj, int)

42voto

Gabriel Ross Points 2906

Vous utilisez juste :

type(varname)

qui produira int, str, float, etc...

31voto

Drake Points 2306

Faire usage de isinstance ?

if isinstance(var, int):

if isinstance(var, str):

if isinstance(var, tuple):

11voto

Goujon Points 245

Veuillez noter que si vous souhaitez vérifier le type de votre variable dans une instruction if, la construction if type(varname) == "tuple": ne fonctionnera pas. Mais ceux-là oui :

if type(varname) is tuple:
if type(varname) is list:
if type(varname) is dict:
if type(varname) is int:
if type(varname) is str:

5voto

Darren Yin Points 427

Vous voudrez probablement tester (en supposant que Python 2.x) en utilisant isinstance(obj, basestring) . Vous avez la possibilité d'utiliser isinstance , type et en appelant l'attribut __class__ mais isinstance est probablement celui que vous voulez ici. Jetez un coup d'œil à cet article pour un traitement plus approfondi des différences entre les trois options.

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