Python的type函数结果你知道嘛
程序员文章站
2022-06-16 14:30:26
目录isinstance() 与 type() 区别:type函数结果举例,主要有六大类:总结简介:type() 函数可以对数据的类型进行判定。isinstance() 与 type() 区别:typ...
简介:type() 函数可以对数据的类型进行判定。
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。 如果要判断两个类型是否相同推荐使用 isinstance()。
type函数结果举例,主要有六大类:
1、标准数据类型。
2、module模块类型:主要来源于模块安装并使用
3、type类型:主要来源于标准数据类型的类对象
4、程序员新增的类,自定义的类型:<class ‘main.xxx’>、nonetype
5、builtin_function_or_method 内置函数或者方法
6、其他拓展类型如:collections.counter、collections.deque等
源码:
import time import random import asyncio import collections # 基本数据类型 print(type(1)) # <class 'int'> print(type(3.14)) # <class 'float'> print(type("hello")) # <class 'str'> print(type([1, 2])) # <class 'list'> print(type((1, "a"))) # <class 'tuple'> print(type({"name": "tom"})) # <class 'dict'> print(type(false)) # <class 'bool'> print("*" * 30) # <class 'module'> print(type(time)) print(type(random)) print(type(asyncio)) print("*" * 30) # <class 'type'> print(type(type)) print(type(int)) print(type(float)) print(type(bool)) print(type(str)) print(type(dict)) print(type(list)) print(type(tuple)) print(type(set)) print("*" * 30) # 自定义的类型:<class '__main__.xxx'> class a: x = 111 def __init__(self): self.x = 1 def run(self): pass @staticmethod def say(): pass @classmethod def live(cls): pass @property def sleep(self): pass a = a() print(type(a)) # <class 'type'> print(type(object)) # <class 'type'> print(type(a)) # <class '__main__.a'> # <class 'nonetype'> print(type(a.__init__())) print(type(a.run())) print(type(a.say())) print(type(a.live())) print(type(a.sleep)) print(type(a.x)) # <class 'int'> 与初始值类型一致 print(type(a.x)) # <class 'int'> 与初始值类型一致 print("*" * 30) # <class 'builtin_function_or_method'> print(type(none)) print(type(bin)) print(type(len)) print(type(min)) print(type(dir)) print("*" * 30) data = "message" result = collections.counter(data) dict1 = collections.ordereddict({"name": "tom", "age": 25, "address": "cn"}) deq1 = collections.deque("abc") print(type(result)) # <class 'collections.counter'> print(type(dict1)) # <class 'collections.ordereddict'> print(type(deq1)) # <class 'collections.deque'>
实际应用举例:
1、判定是否是lambda类型
2、判定是否是函数类型
3、判定是否是方法
4、判定生成器类型等
源码:
from types import lambdatype, methodtype, generatortype, functiontype, builtinfunctiontype test1 = lambda x: x + 1 # 判定是否是lambda类型。需要注意的是lambda就是函数类型,本质是一样的 print(type(test1) == lambdatype) # true # 判定是否是函数类型 print(type(test1) == functiontype) # true # 判定是否是内置函数类型 print(type(bin) == builtinfunctiontype) # true class test2: def run(self): pass test2 = test2() # 判定是否是方法 print(type(test2.run) == methodtype) # 判定生成器类型 a = (x * x for x in range(1, 10)) print(type(a) == generatortype)
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
上一篇: ‘回忆’之 命运转折之旅 *
下一篇: 散落在八廓街的阳光——我匆忙的*游记