Funcional e idiomas avançados

TL;DR

Galho 4 da trilha Python: o “como por dentro” de generators e iterators, closures de verdade, decorators (fundamentos e com argumentos) e o kit functools, fechando com context managers via generator. Fases Adepto→Magus; 9 notas. Assume os Galhos 1 (Core), 2 (Collections) e 3 (OO e Data Model) como pré-requisito.

Sobre este galho

Este galho pega três ferramentas que o resto da linguagem usa por baixo dos panos — iteração, funções de primeira classe e closures — e mostra como elas realmente funcionam. O Galho 2 já usou generator expressions e o Galho 3 já tocou no protocolo iterator via Data Model; aqui é o aprofundamento: como escrever seus próprios generators, como yield from delega pra subgenerators, como closures capturam variáveis (e a armadilha clássica do late binding em loops), e como decorators — que parecem mágica — são só açúcar sintático pra func = decorador(func). Fecha com functools (o kit de ferramentas funcionais da stdlib) e uma segunda forma de escrever context managers, via generator.

Audiência: quem já é confortável com Python básico e OO (Core + Collections + OO e Data Model) e quer entender os idiomas que tornam o código Python “pythônico” — os mesmos padrões usados por bibliotecas populares (Flask, pytest, Click) internamente.

Adepto

  1. [[01 - Iterators e o protocolo iter next|01 — Iterators e o protocolo __iter__/__next__]]
  2. [[02 - Generators — yield e generator functions|02 — Generators: yield e generator functions]]
  3. [[03 - yield from e delegação de generators|03 — yield from e delegação de generators]]
  4. 04 — Closures de verdade
  5. 05 — Decorators: fundamentos

Magus

  1. [[06 - Decorators com argumentos e functools.wraps|06 — Decorators com argumentos e functools.wraps]]
  2. [[07 - functools — ferramentas funcionais|07 — functools: ferramentas funcionais]]
  3. 08 — Context managers via generator
  4. 09 — Capstone: funcional e idiomas avançados — recapitula o galho.

Todas as notas

TABLE fase, status FROM "03-Dominios/Tecnologia/Python/Funcional e idiomas avançados" WHERE type = "concept" SORT file.name ASC

Veja também