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 |