在python中,是没有定义数据类型的,比如数字 a = 10,那么变量a就是int类型,但 比如C++中是 int a = 1
如果需要获取变量的类型时,怎么做呢?可以使用python中的内置函数 type()或instance()
对于基本类型来说 classinfo 可以是:
int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
ps:classinfo 的字符串是 str 而不是 string,字典也是简写 dict
现在的需求是获取对应的数据类型并将该类型返回给前端,发现返回的json后数据出错
>>>p = {
"name":"swapi",
'type':type("swapi")
}
{'name': 'swapi', 'type': <class 'str'>}
原来 type("swapi")
为class
类型数据
那通过什么方式可以输出的 'type'
为 int,float,bool,complex,str,list,dict,set,tuple
这些基本的字符串而不是class类型呢?
type可否有直接输出如 'str'
这样的字符串格式?倒腾一圈发现并没有!那 class
类型数据可否获取到该内容信息呢?
原来提供了类的专有方法 __name__
>>>a = 'swapi'
>>>print(type(a).__name__)
str
>>>b = {"x":"y"}
>>>print(type(b).__name__)
dict
又有如下栗子
>>>import Test
>>>Test.__name__ #Test模块的__name__
'Test'
下面看看type()和instance()的具体使用
type()
type(object)
type(name, bases, dict)
参数:
name:类的名称。
bases:基类的元组。
dict:字典,类内定义的命名空间变量。
返回值:
一个参数返回对象类型, 三个参数,返回新的类型对象。
栗子:
# 一个参数实例
>>> type(1)
<type 'int'>
>>> type('school')
<type 'str'>
>>> type([2])
<type 'list'>
>>> type({0:'zero'})
<type 'dict'>
>>> x = 1
>>> type( x ) == int # 判断类型是否相等
True
# 三个参数
>>> class X(object):
... a = 1
...
>>> X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X
>>> X
<class '__main__.X'>
isinstance()
isinstance(object, classinfo)
参数:
object – 实例对象。
classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组
返回值:
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False
栗子:
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
如果要判断两个类型是否相同推荐使用 isinstance()