Formatar código Python

Só os espaços são reescritos: a indentação é reorganizada e linhas longas podem ser quebradas, enquanto strings, comentários e operadores são copiados byte a byte. É um formatador de layout, não um linter: não verifica nem corrige a sintaxe.

Funciona localmente no seu navegador

Como formatar código Python no navegador

Cole um trecho de Python e a ferramenta devolve o mesmo programa com a indentação reorganizada, uma política de linhas em branco e quebra de linha opcional. Só os espaços entre tokens são reescritos: strings, comentários e chaves de f-strings são copiados byte a byte, então o resultado é analisado com a mesma árvore sintática da entrada.

O formatador roda inteiro nesta aba do navegador e nada é enviado. É um formatador de layout, não um linter: não verifica, não compila e não corrige Python, e nunca informa um erro, então um trecho quebrado volta diagramado em vez de consertado.

  1. Cole o código Python na caixa e pressione Python Code Formatting, ou Ctrl/⌘+Enter. Cada execução substitui o resultado anterior.
  2. Escolha a indentação (tabulação ou 2, 3, 4 ou 8 espaços), quantas linhas em branco manter e se as linhas longas devem quebrar em 80 ou 120 caracteres.
  3. Pressione Copy para levar o resultado, ou Clear para limpar os dois painéis antes do próximo trecho.
  4. A quebra de linha só corta em espaços fora de strings e comentários: dentro de colchetes a quebra é implícita e fora deles é acrescentada uma barra invertida. Escolha No wrapping para deixar cada linha como foi escrita.

O que o formatador muda — e o que permanece igual

O que é reescrito e o que é copiado

Só os espaços entre tokens são reescritos: a indentação inicial é reorganizada na unidade escolhida, espaços no fim da linha e linhas em branco sobrando são removidos, e linhas longas podem ser quebradas. Todo o resto é copiado byte a byte: strings com aspas simples e duplas, strings raw, bytes e f-strings (inclusive chaves com aspas aninhadas), strings de três aspas e docstrings com a indentação interna, comentários e operadores como **, //, :=, -> e os * e ** usados em chamadas e desempacotamento.

Uma verificação rápida de qualquer resultado: a saída tem os mesmos tokens, na mesma ordem, que a entrada, apenas com outro espaçamento. Se o código também passa por Black, Ruff ou autopep8 no seu editor, esta página não substitui essa etapa: ela serve para ler um trecho, não para uma etapa de build.

Indentação, linhas em branco e quebra de linha

Cada nível mais profundo de indentação na entrada vira uma unidade da largura escolhida, então tabulações, 2, 3, 4 e 8 espaços produzem uma estrutura de blocos consistente, e um arquivo que mistura estilos é normalizado para a unidade que você escolher. Linhas que continuam uma instrução inacabada — dentro de colchetes ou depois de uma barra invertida — mantêm o deslocamento em relação à instrução a que pertencem.

A opção de linhas em branco limita sequências de linhas vazias: removê-las, manter no máximo uma ou duas (o padrão mantém duas, o espaçamento comum em volta de definições de nível superior) ou manter todas. A quebra é gulosa e só corta em espaços fora de strings e comentários, então um token nunca é dividido; quando uma string ou um nome longo não pode ser quebrado, a linha continua longa em vez de ser cortada.

O que ele não faz

Não é um linter, um corretor de estilo nem um interpretador. Nada é executado, nenhum nome é renomeado, as importações não são ordenadas, as aspas não são convertidas e dois-pontos ausente ou colchete aberto não são avisados. As linhas que o autor dividiu continuam como estão, a não ser pela indentação.

Como o programa nunca é analisado, a página não consegue dizer que a entrada é inválida: mistura de tabulações e espaços, por exemplo, é normalizada em vez de denunciada. Rode o resultado em python -m py_compile ou no verificador do seu editor quando precisar saber se é válido.

Ferramentas recentes: