type()
用于返回变量的类型
isinstance()
用于判断变量是否是指定的类型。
type()
虽然也可实现isinstance()
的功能,但两者间存在区别:type()
不会认为子类对象是一种父类类型,isinstance()
会认为子类对象是一种父类类型
# -*- coding: utf-8 -*-
class A:
pass
class B(A):
pass
if __name__ == '__main__':
print('使用type判断类型是否是需要的类型')
if type(['192.168', 3389]) is list:
print('list数组')
print(type(['192.168', 3389]))
print(type(('192.168', 3389)))
print(type({'192.168', 3389}))
print(type(1))
print(type(1.8))
print(type('str'))
print(type(True))
print(type({'abc': 456}))
print('使用isinstance判断类型是否是需要的类型')
if isinstance(['192.168', 3389], list):
print('list数组')
print(isinstance(['192.168', 3389], list))
print(isinstance(('192.168', 3389), tuple))
print(isinstance({'192.168', 3389}, set))
print(isinstance(1, int))
print(isinstance(1.8, float))
print(isinstance('str', str))
print(isinstance(True, bool))
print(isinstance({'abc': 456}, dict))
print('子父类判断')
print(isinstance(A(), A)) # returns True
print(type(A()) == A) # returns True
print(isinstance(B(), A)) # returns True
print(type(B()) == A) # returns False
运行结果
使用type判断类型是否是需要的类型
list数组
<class 'list'>
<class 'tuple'>
<class 'set'>
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'dict'>
使用isinstance判断类型是否是需要的类型
list数组
True
True
True
True
True
True
True
True
True
True
True
False