# Anotações de tipo em Python > [!NOTE] Anotações de tipo em Python > As anotações de tipo (ou _type hints_) em [[Linguagem de programação Python|Python]] são uma funcionalidade introduzida na PEP 484 que permite indicar os tipos esperados para variáveis, parâmetros de função e valores de retorno. Embora o Python seja uma linguagem de tipagem dinâmica, as anotações de tipo não alteram o comportamento em tempo de execução, mas servem como metadados valiosos para ferramentas de análise estática, IDEs e, principalmente, para a legibilidade e manutenção do código. :: **Referência** :: [typing — Suporte a dicas de tipo — Documentação do Python 3.11.2](https://docs.python.org/3/library/typing.html) # Por que usar Anotações de Tipo? O uso de anotações de tipo oferece diversos benefícios: 1. **Melhora a Legibilidade e Documentação:** Deixa claro qual tipo de dado uma função espera e retorna, ou qual tipo uma variável deve conter, funcionando como uma forma de documentação viva. 2. **Auxílio em IDEs:** Ambientes de Desenvolvimento Integrado (IDEs) como VS Code, PyCharm e outros podem usar essas anotações para oferecer autocompletar mais preciso, refatoração mais segura e detecção de erros em tempo de desenvolvimento. 3. **Análise Estática de Código:** Ferramentas como o Mypy podem verificar o código sem executá-lo, identificando potenciais erros de tipo antes mesmo de o programa rodar. 4. **Refatoração Mais Segura:** Ao alterar o código, as anotações de tipo ajudam a garantir que as mudanças não introduzam incompatibilidades de tipo em outras partes do sistema. 5. **Facilita a Colaboração:** Em projetos de equipe, as anotações de tipo padronizam a forma como os dados são esperados e manipulados, reduzindo mal-entendidos. # Exemplos Anotações de tipo em [[Linguagem de programação Python|Python]] permitem identificar um tipo de dado para uma dada variável a fim de facilitar a compreensão do que está sendo executado. Como exemplo, temos: ```python def greeting(name: str) -> str: return 'Hello ' + name ``` Assim, sabemos que a função `greeting` recebe uma variável chamada `name` com dados do tipo string e retorna uma variável do tipo string. Você também pode usar tipos de dados para estruturas como: ```python typing.Set(set, MutableSet[T]) typing.Counter(collections.Counter, Dict[T, int]) typing.Deque(_deque, MutableSequence[T]_) ``` ```python from typing import List, Dict, Tuple, Set numeros: List[int] = [1, 2, 3, 4] configuracoes: Dict[str, str] = {"tema": "dark", "idioma": "pt-br"} coordenadas: Tuple[float, float] = (10.5, 20.3) nomes_unicos: Set[str] = {"Ana", "Bruno", "Carlos"} ``` :: **Referência** :: [typing — Suporte a dicas de tipo — Documentação do Python 3.11.2](https://docs.python.org/3/library/typing.html) :: **PEP 484** :: [Type Hints](https://www.python.org/dev/peps/pep-0484/) :: **PEP 526** :: [Syntax for Variable Annotations](https://www.python.org/dev/peps/pep-0526/) :: **PEP 585** :: [Type Hinting Generics In Standard Collections](https://www.python.org/dev/peps/pep-0585/) (para `list[int]` etc.)