Módulo 15 - Empacotamento e boas práticas

PEP 8 e ferramentas de estilo

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Conhecer as regras centrais da PEP 8.
  • Entender por que a consistência de estilo importa em equipe.
  • Saber o papel do formatador black.
  • Saber o papel do verificador ruff.

O que a PEP 8 recomenda

O Python tem um guia de estilo oficial, a PEP 8, que define como o código deve se parecer para ser consistente em toda a comunidade. As regras não são caprichos: elas existem porque código é lido muito mais vezes do que é escrito, e a consistência reduz o esforço de leitura. A PEP 8 padroniza coisas como indentação de quatro espaços, nomes em minúsculas com sublinhado para funções e variáveis, nomes em CapWords para classes, espaçamento ao redor de operadores e limite de comprimento das linhas. Nada disso muda o que o código faz; muda o quanto ele é fácil de entender.

ElementoConvenção da PEP 8Exemplo
Função e variávelminúsculas com sublinhadocalcular_juros, taxa_anual
ClasseCapWords (cada palavra maiúscula)ContaCorrente
Constantemaiúsculas com sublinhadoTAXA_MAXIMA
Indentaçãoquatro espaços por nívelsem tabulação

Algumas convenções centrais da PEP 8 para nomes e indentação.

Um princípio guia toda a PEP 8: o código deve favorecer quem lê. Nomes descritivos valem mais que nomes curtos e enigmáticos. Espaçamento consistente evita que o olho tropece. A própria PEP 8 lembra que a consistência dentro de um projeto importa mais do que seguir a regra ao pé da letra em todo caso isolado. O objetivo não é obedecer por obediência, e sim que qualquer pessoa da equipe consiga ler o código de qualquer outra sem atrito.

black: o formatador que encerra a discussão

Seguir a PEP 8 na mão é trabalhoso e gera discussões intermináveis em equipe sobre onde quebrar uma linha ou quantos espaços usar. O formatador black resolve isso de um jeito radical: ele reescreve o seu código num estilo único e determinístico, sem opções para debater. Você roda o black e o arquivo sai formatado, sempre do mesmo jeito. A vantagem não é só a consistência; é acabar com o debate. Como todo mundo usa o mesmo formatador, ninguém discute estilo em revisão de código, e a energia vai para o que importa, que é a lógica.

# Antes do black: espacamento inconsistente
def somar( a,b ):
    return a+b

resultado=somar(1,2)

# Depois do black: estilo unico e previsivel
def somar(a, b):
    return a + b


resultado = somar(1, 2)

O black reescreve o código num estilo padronizado; a formatação deixa de ser assunto de discussão.

ruff: o verificador rápido de estilo e erros

Enquanto o black cuida da formatação, o ruff cuida da análise. Ele é um linter, uma ferramenta que lê o código sem executá-lo e aponta uma lista de problemas: variáveis importadas e não usadas, nomes que fogem da PEP 8, código inalcançável, comparações suspeitas e muitas outras armadilhas. O ruff ganhou o ecossistema por ser extremamente rápido e por reunir, numa ferramenta só, o trabalho de vários verificadores antigos. Rodar o ruff sobre o projeto é como ter um revisor incansável que passa os olhos em cada arquivo e sinaliza o que merece atenção.

import os          # ruff avisa: importado mas nunca usado

def processar(dados):
    total = 0
    for d in dados:
        total += d
    return totl     # ruff avisa: nome "totl" nao definido (provavel erro de digitacao)

# O ruff aponta esses problemas sem executar o codigo,
# pegando descuidos antes que virem bug.

O ruff detecta import não usado e nome inexistente sem rodar o código, pegando erros cedo.

Vale a distinção de papéis para não confundir com o módulo anterior. O black e o ruff cuidam de estilo e boas práticas do código escrito. O mypy, visto lá no começo do curso, cuida da coerência de tipos. O pytest cuida do comportamento, com testes. São quatro ferramentas complementares, e um projeto bem cuidado costuma usar todas: o black formata, o ruff aponta descuidos, o mypy confere os tipos e o pytest prova que funciona. Nenhuma substitui a outra, e juntas formam a rede de qualidade que marca o trabalho profissional.

Teste rápido

Qual é a principal vantagem de usar um formatador como o black?

Perguntas frequentes

Preciso decorar a PEP 8 inteira?
Não. Vale conhecer as convenções centrais de nomes, indentação e espaçamento, mas as ferramentas aplicam a maior parte por você. Com o black formatando e o ruff apontando desvios, você absorve o estilo na prática, sem precisar memorizar cada regra do documento.
Qual a diferença entre um formatador e um linter?
O formatador, como o black, reescreve o código para deixá-lo num estilo padrão, mexendo na aparência. O linter, como o ruff, apenas analisa e aponta problemas de estilo e possíveis erros, sem necessariamente corrigir. Um arruma a forma; o outro alerta sobre o conteúdo.
O ruff substitui o black?
Eles se complementam, embora o ruff também tenha um componente de formatação. Na prática, muitos projetos usam o ruff para a análise de estilo e erros e o black, ou o formatador do próprio ruff, para a formatação. O importante é ter as duas funções: formatar e verificar.
Essas ferramentas encontram bugs de verdade?
O ruff pega uma classe de problemas, como variáveis não usadas, nomes inexistentes e comparações suspeitas, que muitas vezes são bugs reais ou descuidos que viram bug. Mas ele não entende a lógica do seu programa. Para isso continuam sendo essenciais os testes com pytest e a verificação de tipos com mypy.
A PEP 8 vale para código pessoal ou só para equipe?
Vale para os dois, e por um motivo egoísta útil: o você do futuro é praticamente outra pessoa lendo o seu código. Estilo consistente ajuda a retomar um projeto meses depois. Em equipe o ganho é maior ainda, mas mesmo sozinho a consistência economiza tempo de leitura.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.