关于python:如何知道变量是元组、字符串还是整数?

how to know if a variable is a tuple, a string or an integer?

在串联操作中将一个字符串添加到另一个字符串时,我试图找出类型不匹配的地方。

基本上,返回的错误是一个TypeError(不能连接字符串和元组);所以我想知道我在哪里将值指定为tuple而不是string。

我分配的所有值都是字符串,所以我必须找出元组的来源,所以我希望在python中有一种方法来找出变量中包含什么以及它是什么类型的。

到目前为止,使用pdb,我能够检查变量的内容,并正确地得到我所期望的值;但我也希望知道变量的类型(从逻辑上讲,如果编译器能够引发类型错误,这意味着它知道变量中有什么,以及它是否与要执行的操作兼容;因此必须是获取该值/标志的一种方法)。

有没有办法在python中打印出变量的类型?

顺便说一句,我试图将所有变量都改为显式字符串,但是强制str (myvar)是不可行的,所以我不能在使用字符串的任何地方都转换为字符串类型。


1
2
3
isinstance(obj, tuple)
isinstance(obj, basestring)
isinstance(obj, int)


你只需要使用:

1
type(varname)

它将输出int、str、float等。


使用IsInstance?

1
2
3
4
5
if isinstance(var, int):

if isinstance(var, str):

if isinstance(var, tuple):


请注意,如果您想要检查if语句中的var类型,则构造if type(varname) =="tuple":不起作用。但这些将:

1
2
3
4
5
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:


您可能希望使用isinstance(obj, basestring)测试(假设使用python 2.x)。您可以选择使用isinstancetype,并调用属性__class__,但isinstance可能是您在这里想要的。请看这篇文章,以更彻底地处理这三个选项之间的差异。


repr(object)将给出对象的文本描述,它应该显示类型和值。您可以在调试器中打印或查看此内容。

对于简单值,repr通常返回与用代码逐字写入值相同的字符串。对于自定义类,它提供类名和对象ID,如果类是

1
__repr__

被重写。