В чём разница между type() и isinstance()?

И та и та функция вроде как служит для того что б узнать тип переменной.

Чем отличаются эти 2 функции, когда лучше использовать одно, а когда другое?

type(var) - эта функция используется для того, что б получить тип переменной var.

isinstance(var, str) - эта функция используется для того, что бы понять, является ли переменная var экземпляром типа str (в данном случае).

Когда нужно просто вывести тип переменной, нет смысла использовать функцию isinstance. В случае же если нужно разобраться в последовательности наследования (или просто узнать, является ли тип переменной экземпляром какого-то класса или производного класса он данного) - стоит использовать isinstance вместо того что б вызывать функцию type для одного и для другого и пытаться их сравнить...