zoukankan      html  css  js  c++  java
  • 【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()

  • 相关阅读:
    Laravel-RestfulAPI 资源控制器(全面详解)
    Laravel 支付宝SDK在Laravel5的封装
    Laravel 集成 阿里大于 短信接口
    Laravel --进阶篇 (单用户登录)
    Laravel LTS 分割 路由文件的最佳方式
    Laravel -- 实战篇 自制二维码 Simple QrCode
    Laravel 使用 Aliyun OSS 云存储
    Laravel 富文本插件-Ueditor
    Laravel 实战篇
    Laravel 微信开发组件-WeChat 微信支付
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533577.html
Copyright © 2011-2022 走看看