CEVIU Logo
Voltar

A História dos Lazy Imports do Python: Por que Levou Três Anos e Duas Tentativas

Aprofundamento CEVIU

Aprofundamento

O Python finalmente ganha suporte nativo para imports preguiçosos, mas não como se imaginava em 2022. A PEP 810, aprovada em novembro de 2025, introduz a palavra-chave lazy antes de um import, como lazy import numpy as np. Isso adia o carregamento do módulo até o primeiro acesso ao nome importado, sem alterar a semântica de código existente. Diferente da PEP 690, que tentava mudar o comportamento padrão de todos os imports, a nova abordagem é estritamente opt-in, evita efeitos colaterais imprevisíveis e não exige que bibliotecas sejam reescritas para funcionar. A implementação já está integrada no CPython 3.15 (lançamento previsto para outubro de 2026) e foi validada com reduções reais de inicialização: até 70% em CLIs e 40% no tempo até o primeiro batch em ambientes de ML.

A decisão técnica foi clara: priorizar a estabilidade do ecossistema sobre a conveniência. O Steering Council aprendeu com a rejeição da PEP 690 que mudanças globais em imports quebram expectativas de execução imediata, como inicialização de submódulos, registro de plugins ou side effects intencionais. A PEP 810 resolve isso com granularidade: só o que é marcado como lazy é adiado, e o resto segue o comportamento tradicional. Além disso, o mecanismo __lazy_modules__ permite que bibliotecas declarem imports preguiçosos por padrão sem modificar chamadas externas, uma ponte prática entre legado e futuro.

Por que isso importa

Para desenvolvedores, isso significa menos tempo esperando python -m pytest iniciar, menos overhead em ferramentas CLI e maior controle sobre o ciclo de vida de dependências pesadas. Em ambientes com restrição de memória, como funções serverless ou notebooks interativos, o adiamento de imports reduz o footprint inicial sem exigir refatoração profunda. E, diferentemente de soluções manuais (como mover imports para dentro de funções), a sintaxe lazy é explícita, auditável e integrada ao parser. Não é só otimização: é uma mudança na forma como o Python lida com custo de dependência, agora sob demanda, não por obrigação.

Linha do tempo

  1. Lançamento da PEP 690, propondo lazy imports globais por padrão

  2. Rejeição da PEP 690 pelo Python Steering Council

  3. Criação formal da PEP 810, com foco em lazy imports explícitos

  4. Aprovação unânime da PEP 810 pelo Python Steering Council

  5. Publicação da notícia sobre a consolidação da PEP 810 e seu impacto no ecossistema

Perguntas frequentes

Qual é a diferença prática entre 'lazy import' e mover o import para dentro de uma função?

Mover o import para dentro de uma função funciona, mas polui o escopo local e pode dificultar testes e análise estática. O 'lazy import' mantém o nome no escopo global, adiando apenas o carregamento, o módulo fica acessível imediatamente, mas só é executado na primeira chamada. É mais limpo, previsível e compatível com ferramentas de introspecção.

A PEP 810 vai quebrar meu código atual?

Não. A palavra-chave 'lazy' é nova e não afeta nenhum import existente. Seu código continua funcionando exatamente como antes. Só quem adota explicitamente 'lazy import' passa a ter o comportamento adiado, e mesmo assim, apenas para os nomes declarados dessa forma.

Posso usar lazy imports em bibliotecas que ainda rodam em Python 3.14 ou anterior?

Não nativamente. A sintaxe 'lazy import' só é válida a partir do Python 3.15. Até lá, você pode continuar usando alternativas como 'importlib.util.LazyLoader' ou pacotes como 'lazy_loader', mas sem suporte direto do interpretador. A PEP 810 não inclui fallbacks para versões anteriores.

Como o Python sabe quando um módulo 'lazy' deve ser carregado?

O interpretador instala um proxy no namespace global. Quando o nome importado é acessado pela primeira vez, seja como atributo, chamada ou referência, o proxy dispara o carregamento real do módulo. Erros de import ocorrem nesse momento, não na declaração, o que exige atenção em testes de uso, não só de importação.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Web Dev
Publicado
10 de março de 2026
Editoria
CEVIU Web Dev

Quer receber mais sobre CEVIU Web Dev?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser