Em [[Linguagem de programação Python|Python]], enumerações (enums) são uma forma de criar um conjunto de nomes simbólicos (membros) vinculados a valores únicos e constantes. Elas fornecem uma maneira clara e legível de representar um conjunto fixo de opções ou estados. Python oferece duas formas principais de trabalhar com enumerações: a função `enumerate()` e a classe `Enum` do módulo `enum`. **1. Função `enumerate()`** A função `enumerate()` é usada para iterar sobre uma sequência (como uma lista, tupla ou string) e obter tanto o índice quanto o valor de cada elemento. Ela não cria uma enumeração formal, mas é útil para numerar os elementos de uma sequência existente. **Exemplo:** ```python names = ["Alice", "Bob", "Charlie", "Debbie"] for i, name in enumerate(names): print(f"Name {i} is {name}") ``` **Saída:** ``` Name 0 is Alice Name 1 is Bob Name 2 is Charlie Name 3 is Debbie ``` **Explicação:** * `enumerate(names)`: Retorna um iterador que produz pares `(índice, valor)` para cada elemento da lista `names`. * `for i, name in enumerate(names)`: Desempacota cada par em `i` (o índice) e `name` (o valor). **2. Classe `Enum` (do módulo `enum`)** A classe `Enum` do módulo `enum` permite criar enumerações formais, onde cada membro tem um nome e um valor associado. Isso oferece mais estrutura e segurança em comparação com o uso de constantes soltas. **Exemplo:** ```python from enum import Enum # Sintaxe de classe class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # Sintaxe funcional # Color = Enum('Color', ['RED', 'GREEN', 'BLUE']) #Não recomendada print(Color.RED) # Output: Color.RED print(Color.RED.value) # Output: 1 print(Color(1)) # Output: Color.RED print(Color['RED']) # Output: Color.RED for color in Color: print(color) ``` **Saída:** ``` Color.RED 1 Color.RED Color.RED Color.RED Color.GREEN Color.BLUE ``` **Explicação:** * `from enum import Enum`: Importa a classe `Enum` do módulo `enum`. * `class Color(Enum)`: Define uma nova enumeração chamada `Color` que herda da classe `Enum`. * `RED = 1`, `GREEN = 2`, `BLUE = 3`: Define os membros da enumeração, associando um nome a um valor. * `Color.RED`: Acessa o membro `RED` da enumeração `Color`. * `Color.RED.value`: Acessa o valor associado ao membro `RED` (que é 1). * `Color(1)`: Cria um membro da enumeração a partir do valor 1 (retorna `Color.RED`). * `Color['RED']`: Acessa o membro `RED` da enumeração `Color` usando seu nome como chave. * `for color in Color`: Itera sobre todos os membros da enumeração. **Vantagens de usar a classe `Enum`:** * **Legibilidade:** Torna o código mais claro e fácil de entender. * **Segurança:** Impede o uso de valores inválidos. * **Manutenção:** Facilita a manutenção e a refatoração do código. * **Evita erros:** Garante que você está usando apenas os valores definidos na enumeração. **Quando usar enumerações?** Use enumerações quando você tiver um conjunto fixo de opções ou estados que precisam ser representados de forma clara e segura. Exemplos: * Cores (vermelho, verde, azul) * Dias da semana (segunda, terça, quarta, etc.) * Status de um pedido (pendente, processando, enviado, entregue) * Níveis de prioridade (baixa, média, alta) **Referências:** * [Python enumerate() function (w3schools.com)](https://www.w3schools.com/python/ref_func_enumerate.asp) * [enum — Support for enumerations — Python 3.12.3 documentation](https://docs.python.org/3/library/enum.html)