📊 Capítulo 14: Funcional, Geradores & itertools
Especialização em Sistemas com Python
🗺️ O Funcionamento Interno de Funções Geradoras com yield
sequenceDiagram
autonumber
actor C as Consumidor (for item in gerador():)
participant G as Função Geradora (def gerador():)
C->>G: Inicia iteração (chama next())
Note over G: Executa até o primeiro 'yield 1'
G-->>C: Entrega 1 e CONGELA o Stack Frame na memória! ❄️
C->>G: Pede próximo valor (next())
Note over G: DESCONGELA exatamente onde parou e roda até 'yield 2'
G-->>C: Entrega 2 e CONGELA novamente!
C->>G: Pede próximo valor (next())
Note over G: Função atinge o fim (retorna)
G-->>C: Lança StopIteration (Fim do loop!)
🎯 Slide 1: Geradores: Processamento com Memória Quase Zero
def ler_logs_gigantes(caminho: Path):
with open(caminho, "r", encoding="utf-8") as f:
for linha in f:
if "CRITICAL" in linha:
yield linha.strip()
- Processa arquivos de 50 Gigabytes consumindo menos de 15 Megabytes de memória RAM!
🎯 Slide 2: O Módulo itertools (A Joia da Biblioteca Padrão)
islice: Fatiamento de geradores sem materializar listas.chain: Concatena múltiplos iteráveis de forma preguiçosa.groupby: Agrupa elementos consecutivos com base em chave.
🎯 Slide 3: Decorators de Ordem Superior (functools.wraps)
- Permitem injetar comportamentos como métricas de performance, logs e retry automático em qualquer função mantendo o nome e docstrings originais!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim