如何知道变量是元组,字符串还是整数?

68 python

我试图找出一个类型不匹配,同时在连接操作中将字符串添加到另一个字符串.

基本上返回的错误是TypeError(不能连接字符串和元组); 所以我想弄清楚我在哪里分配一个值作为元组而不是字符串.

我指定的所有值都是字符串,所以我必须弄清楚元组的来源,所以我希望Python中有一种方法可以找出变量中包含的内容以及它的类型.

到目前为止使用pdb我能够检查变量的内容,并且我正确得到了我期望的值; 但我想知道变量的类型(通过逻辑,如果编译器能够引发类型错误,则意味着它知道变量内部是什么以及它是否与要执行的操作兼容;所以必须是一种获得该值/标志的方法).

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

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

Nic*_*alu 152

isinstance(obj, tuple)
isinstance(obj, basestring)
isinstance(obj, int)
Run Code Online (Sandbox Code Playgroud)


Gab*_*oss 38

你只需使用:

type(varname)
Run Code Online (Sandbox Code Playgroud)

将输出int,str,float等...


Dra*_*uan 26

利用isinstance?

if isinstance(var, int):

if isinstance(var, str):

if isinstance(var, tuple):
Run Code Online (Sandbox Code Playgroud)

  • 在 Python 3 中,您可以使用一系列类型来测试:`isinstance(var, (tuple, list))` (5认同)

Gou*_*jon 7

请注意,如果您想在if语句中检查var类型,则该构造 if type(varname) == "tuple":将无法工作。但是这些将:

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:
Run Code Online (Sandbox Code Playgroud)

  • 您应该真正使用isinstance代替。当涉及到继承时,type()是危险的。 (3认同)

Dar*_*Yin 5

您可能想使用isinstance(obj, basestring). 您可以选择使用isinstancetype和调用属性__class__,但isinstance这里可能是您想要的。请查看这篇文章,以更彻底地处理这三个选项之间的差异。