我想检查变量的类型是否是 Python 中的特定类型。例如 - 我想检查 varx
是否是 int 。
>>x=10
>>type(x)
<type 'int'>
但是我怎么能比较他们的类型。我试过这个,但它似乎不起作用。
if type(10)== "<type 'int'>":
print 'yes'
我怎样才能做到这一点 ?
我想检查变量的类型是否是 Python 中的特定类型。例如 - 我想检查 varx
是否是 int 。
>>x=10
>>type(x)
<type 'int'>
但是我怎么能比较他们的类型。我试过这个,但它似乎不起作用。
if type(10)== "<type 'int'>":
print 'yes'
我怎样才能做到这一点 ?
使用该isinstance()
函数测试特定类型:
isinstance(x, int)
isinstance()
采用单一类型或类型元组进行测试:
isinstance(x, (float, complex, int))
例如,将测试一系列不同的数字类型。
你的例子可以写成:
if type(10) is int: # "==" instead of "is" would also work.
print 'yes'
但请注意,它可能不会完全按照您的意愿行事,例如,如果您写了10L
or 一个大于sys.maxint
而不是 just的数字10
,则不会打印 yes,因为long
(这将是此类数字的类型) is not int
。
另一种方法是,正如 Martijn 已经建议的那样,使用isinstance()
内置函数如下:
if isinstance(type(10), int):
print 'yes'
insinstance(instance, Type)
True
不仅返回iftype(instance) is Type
而且如果实例的类型派生自Type
. 因此,因为bool
is int
this 的子类也适用于True
and False
。
但通常最好不要检查特定类型,而是检查您需要的功能。也就是说,如果您的代码无法处理该类型,它会在尝试对该类型执行不受支持的操作时自动抛出异常。
但是,如果您需要以不同的方式处理例如整数和浮点数,您可能需要检查isinstance(var, numbers.Integral)
(needs import numbers
) 评估为True
ifvar
是 type int
、long
或bool
任何从此类派生的用户定义类型。请参阅有关标准类型层次结构和 [numbers
模块]的 Python 文档
您可以使用以下方式:
>>> isinstance('ss', str)
True
>>> type('ss')
<class 'str'>
>>> type('ss') == str
True
>>>
整数 - > 整数
float -> 浮点值
列表 -> 列表
元组 -> 元组
字典 -> 字典
对于类,它有点不同:旧类型类:
>>> # We want to check if cls is a class
>>> class A:
pass
>>> type(A)
<type 'classobj'>
>>> type(A) == type(cls) # This should tell us
新类型类:
>>> # We want to check if cls is a class
>>> class B(object):
pass
>>> type(B)
<type 'type'>
>>> type(cls) == type(B) # This should tell us
>>> #OR
>>> type(cls) == type # This should tell us