“O sistema de tipos visa fornecer uma sintaxe padrão para anotações de tipos, abrindo o código Python para análises estáticas e refatorações mais fáceis, possível verificação de tipos em tempo de execução e (talvez, em alguns contextos) geração de código utilizando informações de tipos. O sistema de tipos foi originalmente especificado em uma série de PEPs, começando com a PEP 484.” - Python.org1

Tipagem

As diferentes linguagens de programação têm tipagem forte ou fraca, tipagem estática ou dinâmica e tipagem explícita ou implícita.

Tipagem em Python

Python tem tipagem forte, dinâmica e implícita.

  • Forte: variáveis de deferentes tipos não pode ser combinadas e geram erro (TypeError) caso tentar.
    Exemplo: "string" + número
    >>> "João" + 1
    ..
    TypeError: can only concatenate str (not "int") to str
    
  • Dinâmica: o tipo da variáveis é definido em tempo de execução e conforme valor atribuído.
    Exemplo:
    nome = "José" # string
    numero = 1 # inteiro
    valor = 5.8 # decimais
    
  • Implícita: É desnecessário declarar o tipo da variável, pois o python identifica automaticamente.
    Exemplo:
    valor = "José" # string
    valor = 1 # inteiro
    valor = 5.8 # decimais
    
    A cada atribuição o tipo é “redefido”.

Observação: Há recurso de identificar tipo em Python-3.5 ou superior, por enquanto, não afeta o comportamento do interpretador.
Isto é para facilitar a leitura do código ou em IDE para auto-completar o código.
Exemplo:

nome: str = "José"
numero: int = 1
valor: float = 5.8
lista: list = [1,2,3,4,5,6]

Referências