Blog

f-strings em Python: guia rápido de formatação

Uma f-string avalia a expressão dentro das chaves e coloca o resultado na string. Ela é mais rápida que % e .format(), e você lê na ordem em que pensa.

A parte depois dos dois-pontos é a especificação de formato, e é ali que mora quase todo o comportamento útil.

O básico

O f antes da aspa é o que deixa as chaves ativas.

# the basics
name, age = 'ada', 36
print(f'{name} is {age}')

Ele imprime:

ada is 36

Qualquer expressão cabe dentro

Chamadas de método, indexação, aritmética e comparações — tudo funciona.

# any expression fits inside the braces
items = ['a', 'b', 'c']
print(f'{len(items)} items, first is {items[0].upper()}')
print(f'{age * 2} and {age > 30}')

Ele imprime:

3 items, first is A
72 and True

Mantenha as expressões curtas. Se a expressão exige raciocínio, dê um nome a ela na linha de cima.

Formatação de números

Depois dos dois-pontos: preenchimento e alinhamento, depois largura, depois precisão e tipo.

# number formatting
price = 1234.5678
print(f'{price:.2f}')
print(f'{price:,.2f}')
print(f'{price:>12.2f}|')
print(f'{price:<12.2f}|')
print(f'{price:^12.2f}|')
print(f'{0.4567:.1%}')

Ele imprime:

1234.57
1,234.57
     1234.57|
1234.57     |
  1234.57   |
45.7%

< alinha à esquerda, > à direita, ^ centraliza. A vírgula insere separadores de milhar, e % multiplica por 100 e acrescenta o sinal.

Alinhando colunas

Largura mais alinhamento já basta para tabelas legíveis no terminal.

# padding and alignment for tables
rows = [('apple', 3), ('bread', 12), ('milk', 1)]
for item, qty in rows:
    print(f'{item:<10}{qty:>4}')

Ele imprime:

apple        3
bread       12
milk         1

O sinal de igual para depurar

Colocar = no fim imprime a expressão junto com o valor dela. É a depuração por print mais rápida que existe em Python.

# the = suffix prints the expression too
total = sum(q for _, q in rows)
print(f'{total=}')
print(f'{len(rows)=}')

Ele imprime:

total=16
len(rows)=3

Datas e outros tipos

A especificação de formato é entregue ao objeto, então qualquer coisa com um método __format__ tem a sua própria minilinguagem. Datas usam os códigos do strftime.

# dates and other __format__ types
import datetime
when = datetime.datetime(2026, 8, 20, 14, 30)
print(f'{when:%d %B %Y}')
print(f'{when:%H:%M}')

Ele imprime:

20 August 2026
14:30

Chaves literais

Duplique elas.

# literal braces are doubled
print(f'{{not a placeholder}} but {name} is')

Ele imprime:

{not a placeholder} but ada is

Zeros à esquerda, sinais e caracteres de preenchimento

Um zero antes da largura preenche com zeros. Um mais força o sinal a aparecer. Qualquer caractere antes do marcador de alinhamento vira o preenchimento.

# fill characters and signs
print(f'{42:05d}')
print(f'{42:+d} {-42:+d}')
print(f'{"title":*^20}')

Ele imprime:

00042
+42 -42
*******title********

O que lembrar

  • A especificação de formato vem depois de dois-pontos, dentro das chaves.

  • :,.2f resolve quase toda formatação de dinheiro.

  • f"{value=}" imprime a expressão e o valor.

  • Duplique as chaves quando quiser uma chave literal.

Um aviso: nunca monte SQL nem comandos de shell com f-strings. Use o suporte a parâmetros do driver do seu banco, e subprocess com uma lista.

How useful was this post?

Click on a heart to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.