type() vs isinstance()
Функція type() повертає тип переданого аргументу, з її допомогою можна перевірити, чи належить аргумент того чи іншого типу:
a = 10
b = [1,2,3]
type(a) == int    # True
type(b) == list   # True
type(a) == float  # False
Функція isinstance() спеціально створена для перевірки належності даних певного класу (типу даних):
isinstance(a,int)    # True
isinstance(b,list)   # True
isinstance(b,tuple)  # False
c = (4,5,6)
isinstance(c,tuple)  # True
Крім того, isinstance() порівняно з type() дозволяє перевірити дане на приналежність хоча б одному типу з кортежу, переданого як другий аргумент:
isinstance(a,(float, int, str))    # True
isinstance(a,(list, tuple, dict))  # False
Інша відмінність isinstance(). Ця функція підтримує спадкування. Для isinstance() екземпляр похідного класу також є екземпляром базового класу. Для type() це не так:
class A (list):
... pass
...
a = A()
type(a) == list     # False
type(a) == A        # True
isinstance(a,A)     # True
isinstance(a,list)  # True