Python Annotations

Experimentando as facilidades das linguagens estáticas.


Durante um bom tempo (e até hoje), muitos programadores se sentiam inseguros com linguagens de tipagem dinâmica, pelo fato de permitir que um erro de tipo seja detectado em "runtime".

Um das coisas que mais soava estranho, era no entendimento de algumas funções ou métodos. Por ex:

def processa_requisicao(a):
if a.method == ‘GET’:
resultado = faca_alguma_coisa()
else:
resultado = faca_outra_coisa()
return result

Pra quem não escreveu o código, fica difícil saber qual o tipo do argumento a ser passado e o tipo da resposta dessa função. Inclusive, pode-se ter duas respostas de tipos diferentes.

No Python 3, uma das novas implementações chama-se Annotations. Eu fiquei um pouco curioso e ler a documentação para entender um pouco mais.

Annotations é, basicamente, uma nova forma de definir funções em Python, forçando os tipos dos argumentos e o tipo da resposta. Muita gente chegou a implementar isso através de decorators, mas agora Python possui uma sintaxe nativa pra esses casos (e sua utilização é opcional).

Vamos supor uma função "exibe_pessoa", que receba dois argumentos, nome e idade, e que retorne uma string. para forçar a tipagem usando annotations, fica dessa forma:

def exibe_pessoa(nome: str, idade: int = 18) -> str:
result = 'nome: %s' % nome
result += 'idade: %d' % idade
return result

No código acima, definimos "nome" como string e "idade" como inteiro, tendo 18 como valor padrão. O resultado da função é uma string.

Com essa nova sintaxe, as IDEs poderão inferir sobre seu código e detectar erros de tipagem antes da execução. Isso é excelente para IDEs com recurso de auto completar código ou de refatoração, pois a IDE consegue sugerir as alternativas que não resultarão em erro.

____

Esse foi o primeiro post sobre Python. Espero que tenha ajudado a aprender algo hoje. Até a próxima!