欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python中type和isinstance的使用和区别

程序员文章站 2022-04-19 14:10:23
1.type()的用法:用于判断一个未知对象的类型print(type(1)) # print(type(1.1)) # print(type(True)) # print(type(-10)) # print(type('1.1')) # print(type(0 + 0j)) ....

1.type(obj):用于判断一个未知对象的类型

例如:

print(type(1))  # <class 'int'>
print(type(1.1))  # <class 'float'>
print(type(True))  # <class 'bool'>
print(type(-10))  # <class 'int'>
print(type('1.1'))  # <class 'str'>
print(type(0 + 0j))  # <class 'complex'>
print(type(1,'2'))

#有报错,说明一次只能判断一个参数
Traceback (most recent call last):
  File "F:/PycharmProjects/mode_test/urllib/urllib9_error.py", line 41, in <module>
    print(type(1,'2'))
TypeError: type() takes 1 or 3 arguments

 

2.isinstance(obj1,obj2):用于在判定一个对象(obj1)是否是另一个给定类(obj2)的实例

例如:

print(isinstance(1, str))  # 返回False
a = 1
b = '1'
try:
    if isinstance(a, b):
        print('类型一样')
except Exception as e:
    print('类型不一样')

简单说就是判断a是不是属于b类型,或者可以理解为a和b的类型是不是一样

例如:

def num_test(num):
    if isinstance(num, (int, str, float, complex)): # 判断num是不是属于后面括号中的某一个类型
        print('type:', type(num).__name__)
    else:
        print('error')

num_test(1)
num_test('')

 

3.在爬虫中的简单用法

try:
    response = request.urlopen('https://httpbin.org/aaa', timeout=0.1)
    print(response.read())
except error.URLError as e:
    print(type(e.reason))
    if isinstance(e.reason, socket.timeout): # 判断e.reason是不是属于socket.timeout类型
        print('Time Out')

 

 

本文地址:https://blog.csdn.net/qq_34398519/article/details/107193249