isinstance no python

Estou estudando python através de um livro e fiz o seguinte exemplo de fatorial usando função isinstance.

  def factory(n):        if not isinstance(n,int) or n<0:             print('NAO E NUMERO INTEIRO VALIDO:\n')             return None        if n==0:             return 1        else:             return n*factory(n-1) 

Agora tentando fazer códigos simples para entender o funcionamento dessa função não estou conseguindo chegar em um resultado, se eu digito numero inteiro ele nem entra no if. Gostaria de entender melhor o isinstance(acabei de chegar no python, não me xinguem =/)

  x=input()    if isinstance(x,int):        print("ok!")