Especialização em Sistemas com Python & POO com Type Hints • Capítulo 14


🗺️ Mapa Conceitual do Tópico

flowchart LR
    A["Stream de Dados Brutos"] -->|"filter() / Comp com if"| B["Filtro Funcional"]
    B -->|"map() / Comp de Transformação"| C["Mapeamento de Dados"]
    C -->|"functools.reduce()"| D["Acumulação e Agregação"]
    C -->|"yield (Gerador)"| E["Streaming Lazy em Memória O(1)"]
    
    style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
    style B fill:#fff3e0,stroke:#ff9800,stroke-width:2px
    style C fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
    style D fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
    style E fill:#fce4ec,stroke:#e91e63,stroke-width:2px

λ 1. Programação Funcional e Funções Puras

  • Funções Puras: Sempre retornam o mesmo resultado para as mesmas entradas e não causam efeitos colaterais.
  • map, filter, functools.reduce: Ferramentas declarativas de processamento de coleções.
  • Comprehensions: Sintaxe idiomática pythônica para construir listas, conjuntos e dicionários.
  • Geradores (yield): Produzem valores sob demanda (Lazy Evaluation), processando gigabytes de dados com consumo de RAM constante $O(1)$.

💻 Exemplo Prático e Tipado

"""
exemplo_14_programacao_funcional_e_geradores.py - Streaming com Geradores e Reduce
"""

from collections.abc import Generator
from functools import reduce


def ler_eventos_streaming(total: int) -> Generator[dict[str, float], None, None]:
    for i in range(1, total + 1):
        yield {"id": i, "valor": float(i * 10.5)}


def calcular_faturamento_total(eventos: Generator[dict[str, float], None, None]) -> float:
    valores = (ev["valor"] for ev in eventos if ev["valor"] > 20.0)
    return reduce(lambda acum, v: acum + v, valores, 0.0)


if __name__ == "__main__":
    stream = ler_eventos_streaming(5)
    total = calcular_faturamento_total(stream)
    print(f"Total Faturado no Stream: R$ {total:.2f}")

🔗 Recursos Pedagógicos do Capítulo 14

Recurso Didático Finalidade Link de Acesso
📊 Slides de Aula Apresentação visual interativa com Dark Mode e suporte a teclado Ver Slides
🧠 Quiz Formativo Teste interativo de fixação com feedback imediato por alternativa Fazer Quiz
💻 Exemplos de Código Demonstrações funcionais com Type Hints e saída no console Ver Exemplos
🧩 Exercícios em 4 Níveis Lista progressiva de fixação com gabarito em bloco colapsável Resolver Exercícios

🗄️ Capítulo Anterior 📚 Sumário de Tópicos ⚡ Próximo Capítulo