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.
-
:,.2fresolve 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.