【python】获取数据类型

在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()

posted @ 2019-10-26 10:01  guanqinghua  阅读(117)  评论(0编辑  收藏  举报