Suponha que você queira gerar o nome e a profissão de uma pessoa. Você poderia escrever um programa simples como este.
# Define variables
name ='Mark'
profession ='Astronaut'
age =7# Output info
output_string =('My name is '+ name +', I am '+str(age)+' years old '+'and my profession is '+ profession +'.')print(output_string)Tecnologia
My name is Mark, I am 7 years old and my profession is Astronaut.Tecnologia
Essa abordagem carece de concisão e legibilidade. Felizmente, a interpolação de strings oferece uma solução melhor. Ele permite que variáveis, expressões ou saídas de funções sejam inseridas diretamente em uma cadeia de caracteres, tornando a manipulação de cadeias de caracteres dinâmica e eliminando a necessidade de concatenação manual.
Usando uma abordagem de interpolação de cadeia, poderíamos reescrever o código da seguinte forma.
# Define variables
name ='Mark'
profession ='Astronaut'
age =7# Output info
output_string =f'My name is {name}, I am {age} years old and my profession is {profession}.'print(output_string)Tecnologia
My name is Mark, I am 7 years old and my profession is Astronaut.Tecnologia
A versão com interpolação de string permite incorporar expressões diretamente dentro da string sem o uso de concatenações confusas. Como você pode ver, é uma abordagem muito mais limpa.
Interpolação básica de strings em Python
Há várias técnicas diferentes de interpolação de strings disponíveis no Python. O método mais comumente recomendado são os literais de string formatados, também conhecidos como f-strings, que estão disponíveis desde o Python 3.6.
Outro método, comumente visto em códigos anteriores ao Python 3.6, é o método .format(). Embora esse método seja mais prolixo do que o f-strings, ele ocasionalmente tem vantagens (detalhes abaixo).
Por fim, você pode encontrar %-formatação de estilo em código legado.
Usando f-strings (Python 3.6+)
f-strings (literais de strings formatadas) são uma maneira poderosa e concisa de formatar strings em Python. Elas foram introduzidas no Python 3.6 e oferecem uma maneira legível e eficiente de inserir variáveis, expressões e chamadas de função diretamente em cadeias de caracteres.
Um exemplo simples da sintaxe básica de uma string f é o seguinte.
name ='Mark'
output_string =f'My name is {name}.'print(output_string)Tecnologia
Nesse código, a variável output_string recebe a atribuição de uma string f. O prefixo f antes da aspa de abertura indica que a string suporta expressões incorporadas. A variável name é avaliada e seu valor é inserido na string, resultando na saída : "My name is Mark."
Não apenas valores de variáveis, mas também cálculos ou expressões podem ser inseridos em f-strings. Considere este exemplo.
import math
a =3.0
b =4.0# Use string interpolation for the formulaprint(f'The hypotenuse of a triangle with base {a} and side {b} is {math.sqrt(a **2+ b **2)}.')Tecnologia
The hypotenuse of a triangle with base 3.0 and side 4.0 is 5.0.Tecnologia
A expressão math.sqrt(a ** 2 + b ** 2) é avaliada diretamente na cadeia de caracteres, eliminando a necessidade de computar o valor separadamente antes de inseri-lo na cadeia.
Usando o método .format()
Assim como as f-strings, o método.format() permite a inserção de variáveis e expressões em uma string. A sintaxe básica do método.format() é a seguinte.
name ='Mark'
output_string ='My name is {}.'.format(name)print(output_string)Tecnologia
Os colchetes {} servem como espaço reservado, indicando que o valor de uma variável será inserido na cadeia de caracteres nessa posição. O valor da variável específica inserida no espaço reservado é determinado pelo argumento fornecido ao método.format().
Argumentos posicionais
O que acontece se você precisar de vários espaços reservados para várias variáveis? Considere o código a seguir.
name ='Mark'
age =7# The placeholders are filled in order of the arguments
output_string ='My name is {} and I am {} years old.'.format(name, age)print(output_string)Tecnologia
Neste exemplo, você precisa de duas variáveis: name e age. Consequentemente, a cadeia de caracteres inclui dois espaços reservados e as variáveis são inseridas na mesma ordem em que aparecem no método .format(). Esses argumentos são conhecidos como *positional* arguments porque seu posicionamento na string é determinado por sua posição na lista de argumentos do método.
Espaços reservados indexados e nomeados
Como uma variação da ideia do espaço reservado, considere este exemplo.
name ='Mark'
age =7# Print age twice
output_string ='My name is {} and I am {} years old. My twin brother is also {} years old.'.format(name, age, age)print(output_string)Tecnologia
My name is Mark and I am 7 years old. My twin brother is also 7 years old.Tecnologia
Aqui, reutilizamos o valor da variável age duas vezes. Incluir a mesma variável várias vezes dessa forma é complicado e prejudica a legibilidade. Existe uma maneira de reutilizar uma variável em uma string formatada com o método .format() sem repeti-la? Sim, você pode, usando os chamados *indexed placeholders*.
name ='Mark'
age =7# Use indexed placeholders
output_string ='My name is {0} and I am {1} years old. My twin brother is also {1} years old.'.format(name, age)print(output_string)Tecnologia
My name is Mark and I am 7 years old. My twin brother is also 7 years old.Tecnologia
Neste exemplo, definimos explicitamente a ordem das variáveis entre colchetes, seguindo a indexação baseada em zero do Python. Além disso, reutilizamos a variável no índice 1 em vez de repeti-la.
Como alternativa à indexação posicional, você também pode usar argumentos nomeados, em que cada argumento recebe um nome.
print('My name is {name} and I am {age} years old.'.format(name='Mark', age=7))Tecnologia
O argumento nomeado é avaliado dentro dos colchetes que especificam seu nome. Como resultado, o espaço reservado {name} é substituído pelo valor "Mark", e o espaço reservado {age} é substituído por 30.
Usando o operador %
O método final para interpolação de strings é o operador%. Funciona de forma semelhante ao comando printf() em C. Seu uso é obsoleto e fortemente desencorajado em favor de f-strings ou do método.format(). Ele é mencionado aqui porque você pode encontrá-lo em bases de código legadas.
O formato básico do operador % é: "format string" % values. A string de formato contém espaços reservados, como %s para strings, que são substituídos por valores. Por exemplo, o exemplo a seguir imprime "Hello, Mark".
Outros especificadores de formato comuns são mostrados na tabela a seguir.
Especificador
Significado
Exemplo
%s
Cadeia de caracteres
"Olá %s" % "Alice" → "Olá Alice"
%d
Inteiro (decimal)
"Idade: %d" % 25 → "Idade: 25"
%f
Float (padrão de 6 casas decimais)
"Pi: %f" % 3.14159 → "Pi: 3.141590"
%.nf
Float (n casas decimais)
"%.2f" % 3.14159 → "3.14"
%x
Hexadecimal (letras minúsculas)
"%x" % 255 → "ff"
%X
Hexadecimal (maiúsculas)
"%X" % 255 → "FF"
%o
Octal
"%o" % 255 → "377"
O operador % tem muitas limitações. Por um lado, ele é menos legível do que as f-strings. Considere o código a seguir.
name ="Alice"
age =30
height =5.6# The % operator is hard to scan
message ="My name is %s, I am %d years old, and my height is %.1f feet."%(name, age, height)print(message)Tecnologia
My name is Alice, I am 30 years old, and my height is 5.6 feet.Tecnologia
Esse código está claro à primeira vista? Provavelmente não. Há muita análise visual entre o espaço reservado e as variáveis que preenchem os espaços em branco. É fácil você se confundir (ou ficar tonto) com toda essa varredura para frente e para trás.
Agora, considere um código equivalente usando f-strings.
# This is much cleaner
message =f"My name is {name}, I am {age} years old, and my height is {height:.1f} feet."print(message)Tecnologia
My name is Alice, I am 30 years old, and my height is 5.6 feet.Tecnologia
Você não precisa fazer varredura nem usar strings de formatação obscuras. O código é limpo, fácil de entender e fácil de escrever. Você pode aprender outras dicas para escrever códigos claros e otimizados com ocurso de habilidades de programação em Python do DataCamp.
Técnicas avançadas de interpolação de strings em Python
Agora que você já entendeu os conceitos básicos da interpolação de strings em Python, vamos examinar alguns usos mais avançados.
Interpolação de strings de várias linhas em Python
As f-strings também podem ser usadas para conteúdo de várias linhas usando o significante f com aspas triplas (simples ou duplas). O texto pode ser escrito em várias linhas e aparecerá na saída exatamente como foi formatado.
name ='Mark'
profession ='Astronaut'
age =7# This is an example of a multiline string
bio =f"""
Name: {name}
Profession: {profession}
Age: {age}
"""print(bio)Tecnologia
As cadeias de caracteres com várias linhas também podem ser criadas usando o método.format().
name ='Mark'
profession ='Astronaut'
age =7# This is a multiline string with .format()
bio ="""
Name: {}
Profession: {}
Age: {}
""".format(name, profession, age)print(bio)Tecnologia
Casos de uso para interpolação de strings de várias linhas
Por que você gostaria de usar a interpolação de strings de várias linhas? Há muitos usos para a interpolação de strings de várias linhas. Aqui estão alguns casos de uso:
Geração de e-mails ou mensagens de várias linhas
Registro e depuração
Geração de consultas SQL de forma dinâmica
Geração de e-mails ou mensagens de várias linhas
Suponha que você esteja enviando uma carta de formulário para muitos convidados de uma conferência de tecnologia.
name ="Alice"
event ="Annual Tech Conference"
date ="March 15, 2025"
email ="""Dear {name},
We are pleased to invite you to the {event} taking place on {date}.
We hope you can join us for an exciting experience.
Best regards,
The Event Team""".format(name=name, event=event, date=date)print(email)Tecnologia
Dear Alice,
We are pleased to invite you to the Annual Tech Conference taking place on March 15, 2025.
We hope you can join us for an exciting experience.
Best regards,
The Event TeamTecnologia
Com as f-strings, a criação de uma carta de formulário é simples e eficiente. Para alterar o nome, o evento ou a data, basta alterá-los nas variáveis e a string será alterada automaticamente.
Registro e depuração
As cadeias de caracteres de várias linhas são úteis para imprimir mensagens de erro em registros.
error_code =404
url ='/missing-page'
timestamp ='2025-02-05 12:30:00'
error_message ='The requested page could not be found.'
log_message =f"""[ERROR {error_code}]
Time: {timestamp}
URL: {url}{error_message}"""print(log_message)Tecnologia
[ERROR 404]
Time: 2025-02-05 12:30:00
URL: /missing-page
The requested page could not be found.Tecnologia
Esse método mantém as mensagens de registro estruturadas e facilita a depuração com registros devidamente formatados.
Geração de consultas SQL de forma dinâmica
As consultas SQL podem ser criadas dinamicamente usando cadeias de caracteres de várias linhas.
table ='users'
column ='email'
value ='[email protected]'
query =f"""SELECT *
FROM {table}
WHERE {column} = '{value}';"""print(query)Tecnologia
Esse método torna as consultas SQL legíveis e mantém a indentação. Além disso, ele elimina a necessidade de usar + para concatenação de strings.
Outros casos de uso incluem:
Redação de contratos formatados
Criando Markdown ou $\LaTeX$ documentos
Modelos HTML/XML de várias linhas
Geração de respostas de API ou texto semelhante a JSON
Vantagens da interpolação de strings de várias linhas
Como você pode ver, há várias vantagens na interpolação de strings de várias linhas.
A interpolação de strings preserva a formatação sem a necessidade do caractere de escape \n.
A interpolação de strings melhora a legibilidade em comparação com a formatação de linha única.
A interpolação de strings reduz a desordem ao trabalhar com texto estruturado (por exemplo, logs, consultas, relatórios).
A interpolação de strings permite a geração dinâmica de texto sem quebrar a indentação.
Formatação de números e valores especiais
Para controlar o número de casas decimais exibidas usando uma string f, use a sintaxe: f'{value:.nf}', em que value é o número de ponto flutuante, n é o número de casas decimais e f (o que vem depois de .) representa a formatação de ponto flutuante.
Para ilustrar, o código a seguir gera $\pi$ com diferentes casas decimais.
pi =3.1415926535print(f'Pi rounded to 2 decimal places: {pi:.2f}')print(f'Pi rounded to 4 decimal places: {pi:.4f}')print(f'Pi rounded to 0 decimal places: {pi:.0f}')Tecnologia
Pi rounded to 2 decimal places: 3.14
Pi rounded to 4 decimal places: 3.1416
Pi rounded to 0 decimal places: 3Tecnologia
A formatação com o método.format() é semelhante.
print('Pi rounded to 2 decimal places: {:.2f}'.format(pi))print('Pi rounded to 4 decimal places: {:.4f}'.format(pi))print('Pi rounded to 0 decimal places: {:.0f}'.format(pi))Tecnologia
Pi rounded to 2 decimal places:3.14
Pi rounded to 4 decimal places:3.1416
Pi rounded to 0 decimal places:3Tecnologia
Você pode usar uma string f para formatar porcentagens usando a sintaxe :.nf combinada com %, em que n é o número de casas decimais.
Você pode usar uma string f para formatar a moeda usando :, para separadores de milhares e .nf para controlar as casas decimais. Você também pode incluir um símbolo de moeda, como $, € ou £, diretamente na cadeia de caracteres.
Para usar f-strings com um dicionário em Python, acesse os valores do dicionário dentro dos colchetes usando a notação de colchetes (dict['key']) ou descompactando o dicionário com **.
person ={'name':'Alice','age':30,'city':'New York'}print(f"My name is {person['name']}, I am {person['age']} years old, and I live in {person['city']}.")Tecnologia
My name is Alice, I am 30 years old, and I live in New York.Tecnologia
Em vez de acessar cada chave manualmente, você pode descompactar o dicionário em uma string f da seguinte forma.
person ={'name':'Alice','age':30,}print(f'My name is {name} and I am {age} years old.'.format(**person))Tecnologia
Prós e contras dos métodos de interpolação de cadeias de caracteres
Como vimos, as f-strings e o método .format() são métodos úteis para interpolação de strings. Vejamos uma comparação dos prós e contras de cada método.
Recurso
F-strings
.format()
% de formatação
Legibilidade
🟢 Melhor
🟡 OK
🔴 Mais difícil
Desempenho
🟢 Mais rápido
🟡 Mais lento
🔴 Mais lento
Suporta expressões
🟢 Sim
Indireto
🔴 Não
Suporte multilinha
🟢 Sim
🟢 Sim
🔴 Não
Facilidade de uso
🟢 Mais fácil
🟡 Médio
🔴 Difícil
Depuração (= Operador)
🟢 Sim (Python 3.8+)
🔴 Não
🔴 Não
Quando você deve usar .format() sobre as cordas f?
Vantagem
Por que usar .format()?
Suporte a Python legado
Funciona em Python 2.7+
Pedidos flexíveis
Permite reordenar facilmente os espaços reservados
Formatação dinâmica
Funciona quando o especificador de formato é dinâmico
Alças {} Braçadeiras melhores
Evita a fuga manual extra
Funciona bem com dicionários
Teclas de ditado mais fáceis de usar
Armadilhas comuns e práticas recomendadas
A seguir, você encontrará alguns métodos de solução de problemas e as principais dicas para usar a interpolação de cadeia de caracteres do Python.
Como evitar erros de sintaxe com chaves
Há muitos erros de sintaxe que você pode cometer ao usar a interpolação de strings envolvendo chaves.
Certifique-se de que cada { tenha um } correspondente.
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[101], line 1---->1print(f'Set notation: {a, b, c}')
NameError: name 'c'isnot definedTecnologia
O Python interpreta a, b, c dentro das chaves como uma tupla, tentando encontrar um valor associado a a. Como essa variável não existe, você recebe um KeyError. A correção é usar colchetes duplos {{}}.
Vamos comparar o desempenho das cadeias de caracteres f e .format().
import timeit
name ="Alice"
age =30
pi =3.1415926535# Measure f-string performance
f_string_time = timeit.timeit('f"My name is {name} and I am {age} years old."',globals=globals(), number=1000000)# Measure .format() performance
format_time = timeit.timeit('"My name is {} and I am {} years old.".format(name, age)',globals=globals(), number=1000000)# Measure f-string performance with expressions
f_string_expr_time = timeit.timeit('f"Pi rounded to 2 decimal places: {pi:.2f}"',globals=globals(), number=1000000)# Measure .format() performance with expressions
format_expr_time = timeit.timeit('"Pi rounded to 2 decimal places: {:.2f}".format(pi)',globals=globals(), number=1000000)# Print resultsprint(f"f-string (simple): {f_string_time:.6f} seconds")print(f".format() (simple): {format_time:.6f} seconds")print(f"f-string (with expression): {f_string_expr_time:.6f} seconds")print(f".format() (with expression): {format_expr_time:.6f} seconds")Tecnologia
Como você pode ver, do ponto de vista da eficiência, deve-se preferir as cordas f a .format().
Práticas recomendadas para interpolação de string limpa e legível
Para garantir que a formatação da cadeia de caracteres seja clara, eficiente e de fácil manutenção, siga estas práticas recomendadas ao usar cadeias de caracteres interpoladas.
Prefira f-strings para facilitar a leitura (Python 3.6+)
# Recommended
name ="Alice"
age =30print(f"My name is {name} and I am {age} years old.")# Not Recommended (Less readable)print("My name is {} and I am {} years old.".format(name, age))# Avoid using % formatting (Outdated)print("My name is %s and I am %d years old."%(name, age))Tecnologia
My name is Alice and I am 30 years old.
My name is Alice and I am 30 years old.
My name is Alice and I am 30 years old.Tecnologia
Use marcadores de posição nomeados para maior clareza
# Named placeholders (readable)
user ={"name":"Alice","age":30}print(f"My name is {user['name']} and I am {user['age']} years old.")# Using indexes in .format() (not as readable)print("My name is {0} and I am {1} years old.".format("Alice",30))Tecnologia
My name is Alice and I am 30 years old.
My name is Alice and I am 30 years old.Tecnologia
Mantenha as cadeias de caracteres de várias linhas legíveis.
name ="Alice"
age =30
message =f"""Hello, {name}!
We are happy to invite you to our event.
At {age} years old, you are eligible for the VIP pass.
Best regards,
Event Team
"""print(message)Tecnologia
Hello, Alice!
We are happy to invite you to our event.
At 30 years old, you are eligible for the VIP pass.
Best regards,
Event Team Tecnologia
Use f-strings no registro para melhorar a depuração
O Python 3.8 e posteriores oferecem suporte a = para depuração em f-strings.
value = 42
# Output: value = 42
print(f"{value = }") Tecnologia
A interpolação de strings é um recurso avançado do Python que torna a formatação de strings mais limpa, mais legível e mais eficiente. Entre os métodos disponíveis, as f-strings são a abordagem mais moderna e recomendada, oferecendo melhor desempenho, clareza e flexibilidade em relação a métodos mais antigos, como .format() e % formatting .
Seguindo as práticas recomendadas, como o uso de placeholders nomeados, o controle da precisão decimal, o alinhamento do texto para facilitar a leitura e o tratamento de chaves de dicionário ausentes, você pode escrever uma formatação de cadeia de caracteres limpa, profissional e de fácil manutenção em Python.
Independentemente de você estar gerando relatórios formatados, mensagens de várias linhas ou saídas de dados estruturados, as f-strings oferecem uma maneira simples, mas poderosa, de integrar variáveis e expressões sem problemas. A adoção de f-strings não apenas melhorará a qualidade do seu código, mas também aumentará sua eficiência.
Para obter mais informações sobre interpolação de strings em Python, consulte os recursos do DataCamp:
Perguntas frequentes sobre interpolação de strings em Python
O que é interpolação de cadeia de caracteres em Python?⌄
A interpolação de strings é o processo de inserção de variáveis, expressões ou saídas de funções diretamente em uma string. O Python oferece suporte a isso usando f-strings, .format() e formatação %.
As f-strings estão disponíveis em todas as versões do Python?⌄
Não, as f-strings foram introduzidas no Python 3.6. Se estiver usando uma versão mais antiga, você precisará usar .format() ou % de formatação.
Por que as cadeias de caracteres f são preferidas em relação à formatação .format() e %?⌄
As f-strings são mais rápidas, mais legíveis e mais concisas do que as formatações .format() e %. Eles permitem a incorporação direta de variáveis e expressões em linha, o que os torna mais eficientes.
Posso usar f-strings com dicionários?⌄
Sim, você pode acessar valores de dicionário dentro de f-strings:
user ={"name":"Alice","age":30}print(f"My name is {user['name']} and I am {user['age']} years old.")Tecnologia
Como alternativa, desempacote o dicionário:
print(f"My name is {name} and I am {age}.".format(**user))Tecnologia
Como faço para formatar números usando f-strings?⌄
Você pode controlar as casas decimais e adicionar separadores de milhares usando especificadores de formato:
Mark Pedigo, PhD, é um ilustre cientista de dados com experiência em ciência de dados de saúde, programação e educação. Com doutorado em matemática, bacharelado em ciência da computação e certificado profissional em IA, Mark combina conhecimento técnico com solução prática de problemas. Sua carreira inclui funções em detecção de fraudes, previsão de mortalidade infantil e previsão financeira, além de contribuições para o software de estimativa de custos da NASA. Como educador, ele lecionou no DataCamp e na Washington University em St. Louis e foi mentor de programadores juniores. Em seu tempo livre, Mark curte o ar livre de Minnesota com sua esposa Mandy e seu cachorro Harley e toca piano jazz.
Neste tutorial, você aprenderá tudo sobre as cadeias de caracteres do Python: fatiamento e encadeamento, manipulação e formatação com a classe Formatter, cadeias de caracteres f, modelos e muito mais!
Saiba mais sobre a técnica de formatação f-string no Python 3.6. Neste tutorial, você verá as vantagens que ele oferece e verá alguns exemplos de casos de uso.
Aprenda sobre as funções lambda do Python, para que servem e quando usá-las. Inclui exemplos práticos e melhores práticas para uma implementação eficaz.
Um tutorial introdutório completo sobre loops em Python. Aprenda e pratique loops while e for, loops aninhados, as palavras-chave break e continue, a função range e muito mais!
Desenvolva suas habilidades de programação em Python. Aprenda a trabalhar com módulos e pacotes, usar tipos de dados integrados e escrever funções personalizadas.
Suponha que você queira gerar o nome e a profissão de uma pessoa. Você poderia escrever um programa simples como este.
Essa abordagem carece de concisão e legibilidade. Felizmente, a interpolação de strings oferece uma solução melhor. Ele permite que variáveis, expressões ou saídas de funções sejam inseridas diretamente em uma cadeia de caracteres, tornando a manipulação de cadeias de caracteres dinâmica e eliminando a necessidade de concatenação manual.
Usando uma abordagem de interpolação de cadeia, poderíamos reescrever o código da seguinte forma.
A versão com interpolação de string permite incorporar expressões diretamente dentro da string sem o uso de concatenações confusas. Como você pode ver, é uma abordagem muito mais limpa.
Interpolação básica de strings em Python
Há várias técnicas diferentes de interpolação de strings disponíveis no Python. O método mais comumente recomendado são os literais de string formatados, também conhecidos como f-strings, que estão disponíveis desde o Python 3.6.
Outro método, comumente visto em códigos anteriores ao Python 3.6, é o método
.format(). Embora esse método seja mais prolixo do que o f-strings, ele ocasionalmente tem vantagens (detalhes abaixo).Por fim, você pode encontrar
%-formatação de estilo em código legado.Usando f-strings (Python 3.6+)
f-strings (literais de strings formatadas) são uma maneira poderosa e concisa de formatar strings em Python. Elas foram introduzidas no Python 3.6 e oferecem uma maneira legível e eficiente de inserir variáveis, expressões e chamadas de função diretamente em cadeias de caracteres.
Um exemplo simples da sintaxe básica de uma string f é o seguinte.
Nesse código, a variável
output_stringrecebe a atribuição de uma string f. O prefixofantes da aspa de abertura indica que a string suporta expressões incorporadas. A variávelnameé avaliada e seu valor é inserido na string, resultando na saída :"My name is Mark."Não apenas valores de variáveis, mas também cálculos ou expressões podem ser inseridos em f-strings. Considere este exemplo.
A expressão
math.sqrt(a ** 2 + b ** 2)é avaliada diretamente na cadeia de caracteres, eliminando a necessidade de computar o valor separadamente antes de inseri-lo na cadeia.Usando o método .format()
Assim como as f-strings, o método
.format()permite a inserção de variáveis e expressões em uma string. A sintaxe básica do método.format()é a seguinte.Os colchetes
{}servem como espaço reservado, indicando que o valor de uma variável será inserido na cadeia de caracteres nessa posição. O valor da variável específica inserida no espaço reservado é determinado pelo argumento fornecido ao método.format().Argumentos posicionais
O que acontece se você precisar de vários espaços reservados para várias variáveis? Considere o código a seguir.
Neste exemplo, você precisa de duas variáveis:
nameeage. Consequentemente, a cadeia de caracteres inclui dois espaços reservados e as variáveis são inseridas na mesma ordem em que aparecem no método.format(). Esses argumentos são conhecidos como *positional* arguments porque seu posicionamento na string é determinado por sua posição na lista de argumentos do método.Espaços reservados indexados e nomeados
Como uma variação da ideia do espaço reservado, considere este exemplo.
Aqui, reutilizamos o valor da variável
ageduas vezes. Incluir a mesma variável várias vezes dessa forma é complicado e prejudica a legibilidade. Existe uma maneira de reutilizar uma variável em uma string formatada com o método.format()sem repeti-la? Sim, você pode, usando os chamados *indexed placeholders*.Neste exemplo, definimos explicitamente a ordem das variáveis entre colchetes, seguindo a indexação baseada em zero do Python. Além disso, reutilizamos a variável no índice 1 em vez de repeti-la.
Como alternativa à indexação posicional, você também pode usar argumentos nomeados, em que cada argumento recebe um nome.
O argumento nomeado é avaliado dentro dos colchetes que especificam seu nome. Como resultado, o espaço reservado
{name}é substituído pelo valor"Mark", e o espaço reservado{age}é substituído por30.Usando o operador %
O método final para interpolação de strings é o operador
%. Funciona de forma semelhante ao comandoprintf()em C. Seu uso é obsoleto e fortemente desencorajado em favor de f-strings ou do método.format(). Ele é mencionado aqui porque você pode encontrá-lo em bases de código legadas.O formato básico do operador
%é:"format string" % values. A string de formato contém espaços reservados, como%spara strings, que são substituídos por valores. Por exemplo, o exemplo a seguir imprime "Hello, Mark".Outros especificadores de formato comuns são mostrados na tabela a seguir.
Especificador
Significado
Exemplo
%s
Cadeia de caracteres
"Olá %s" % "Alice" → "Olá Alice"
%d
Inteiro (decimal)
"Idade: %d" % 25 → "Idade: 25"
%f
Float (padrão de 6 casas decimais)
"Pi: %f" % 3.14159 → "Pi: 3.141590"
%.nf
Float (n casas decimais)
"%.2f" % 3.14159 → "3.14"
%x
Hexadecimal (letras minúsculas)
"%x" % 255 → "ff"
%X
Hexadecimal (maiúsculas)
"%X" % 255 → "FF"
%o
Octal
"%o" % 255 → "377"
O operador % tem muitas limitações. Por um lado, ele é menos legível do que as f-strings. Considere o código a seguir.
Esse código está claro à primeira vista? Provavelmente não. Há muita análise visual entre o espaço reservado e as variáveis que preenchem os espaços em branco. É fácil você se confundir (ou ficar tonto) com toda essa varredura para frente e para trás.
Agora, considere um código equivalente usando f-strings.
Você não precisa fazer varredura nem usar strings de formatação obscuras. O código é limpo, fácil de entender e fácil de escrever. Você pode aprender outras dicas para escrever códigos claros e otimizados com ocurso de habilidades de programação em Python do DataCamp.
Técnicas avançadas de interpolação de strings em Python
Agora que você já entendeu os conceitos básicos da interpolação de strings em Python, vamos examinar alguns usos mais avançados.
Interpolação de strings de várias linhas em Python
As f-strings também podem ser usadas para conteúdo de várias linhas usando o significante f com aspas triplas (simples ou duplas). O texto pode ser escrito em várias linhas e aparecerá na saída exatamente como foi formatado.
As cadeias de caracteres com várias linhas também podem ser criadas usando o método
.format().Casos de uso para interpolação de strings de várias linhas
Por que você gostaria de usar a interpolação de strings de várias linhas? Há muitos usos para a interpolação de strings de várias linhas. Aqui estão alguns casos de uso:
Geração de e-mails ou mensagens de várias linhas
Suponha que você esteja enviando uma carta de formulário para muitos convidados de uma conferência de tecnologia.
Com as f-strings, a criação de uma carta de formulário é simples e eficiente. Para alterar o nome, o evento ou a data, basta alterá-los nas variáveis e a string será alterada automaticamente.
Registro e depuração
As cadeias de caracteres de várias linhas são úteis para imprimir mensagens de erro em registros.
Esse método mantém as mensagens de registro estruturadas e facilita a depuração com registros devidamente formatados.
Geração de consultas SQL de forma dinâmica
As consultas SQL podem ser criadas dinamicamente usando cadeias de caracteres de várias linhas.
Esse método torna as consultas SQL legíveis e mantém a indentação. Além disso, ele elimina a necessidade de usar
+para concatenação de strings.Outros casos de uso incluem:
Vantagens da interpolação de strings de várias linhas
Como você pode ver, há várias vantagens na interpolação de strings de várias linhas.
\n.Formatação de números e valores especiais
Para controlar o número de casas decimais exibidas usando uma string f, use a sintaxe:
f'{value:.nf}', em quevalueé o número de ponto flutuante,né o número de casas decimais ef(o que vem depois de.) representa a formatação de ponto flutuante.Para ilustrar, o código a seguir gera $\pi$ com diferentes casas decimais.
A formatação com o método
.format()é semelhante.Você pode usar uma string f para formatar porcentagens usando a sintaxe
:.nfcombinada com%, em quené o número de casas decimais.Você pode usar uma string f para formatar a moeda usando
:,para separadores de milhares e.nfpara controlar as casas decimais. Você também pode incluir um símbolo de moeda, como $, € ou £, diretamente na cadeia de caracteres.Uso de f-strings com dicionários e listas
Para usar f-strings com um dicionário em Python, acesse os valores do dicionário dentro dos colchetes usando a notação de colchetes (dict['key']) ou descompactando o dicionário com **.
Em vez de acessar cada chave manualmente, você pode descompactar o dicionário em uma string f da seguinte forma.
Para evitar um erro por falta de chaves, use
get()para acessar o dicionário.Prós e contras dos métodos de interpolação de cadeias de caracteres
Como vimos, as f-strings e o método
.format()são métodos úteis para interpolação de strings. Vejamos uma comparação dos prós e contras de cada método.Recurso
F-strings
.format()
% de formatação
Legibilidade
🟢 Melhor
🟡 OK
🔴 Mais difícil
Desempenho
🟢 Mais rápido
🟡 Mais lento
🔴 Mais lento
Suporta expressões
🟢 Sim
Indireto
🔴 Não
Suporte multilinha
🟢 Sim
🟢 Sim
🔴 Não
Facilidade de uso
🟢 Mais fácil
🟡 Médio
🔴 Difícil
Depuração (= Operador)
🟢 Sim (Python 3.8+)
🔴 Não
🔴 Não
Quando você deve usar
.format()sobre as cordas f?Vantagem
Por que usar .format()?
Suporte a Python legado
Funciona em Python 2.7+
Pedidos flexíveis
Permite reordenar facilmente os espaços reservados
Formatação dinâmica
Funciona quando o especificador de formato é dinâmico
Alças {} Braçadeiras melhores
Evita a fuga manual extra
Funciona bem com dicionários
Teclas de ditado mais fáceis de usar
Armadilhas comuns e práticas recomendadas
A seguir, você encontrará alguns métodos de solução de problemas e as principais dicas para usar a interpolação de cadeia de caracteres do Python.
Como evitar erros de sintaxe com chaves
Há muitos erros de sintaxe que você pode cometer ao usar a interpolação de strings envolvendo chaves.
Felizmente, o erro é simples e a correção é fácil.
O que acontece se você quiser imprimir chaves em uma cadeia de caracteres interpolada? Qualquer coisa dentro de colchetes será (tentará ser) avaliada.
O Python interpreta a, b, c dentro das chaves como uma tupla, tentando encontrar um valor associado a a. Como essa variável não existe, você recebe um KeyError. A correção é usar colchetes duplos
{{}}.Notação de conjunto: {{a, b, c}}
Comparação de desempenho: f-strings vs. .format()
Vamos comparar o desempenho das cadeias de caracteres f e
.format().Como você pode ver, do ponto de vista da eficiência, deve-se preferir as cordas f a
.format().Práticas recomendadas para interpolação de string limpa e legível
Para garantir que a formatação da cadeia de caracteres seja clara, eficiente e de fácil manutenção, siga estas práticas recomendadas ao usar cadeias de caracteres interpoladas.
O Python 3.8 e posteriores oferecem suporte a
=para depuração em f-strings.Conclusão
A interpolação de strings é um recurso avançado do Python que torna a formatação de strings mais limpa, mais legível e mais eficiente. Entre os métodos disponíveis, as f-strings são a abordagem mais moderna e recomendada, oferecendo melhor desempenho, clareza e flexibilidade em relação a métodos mais antigos, como
.format()e%formatting .Seguindo as práticas recomendadas, como o uso de placeholders nomeados, o controle da precisão decimal, o alinhamento do texto para facilitar a leitura e o tratamento de chaves de dicionário ausentes, você pode escrever uma formatação de cadeia de caracteres limpa, profissional e de fácil manutenção em Python.
Independentemente de você estar gerando relatórios formatados, mensagens de várias linhas ou saídas de dados estruturados, as f-strings oferecem uma maneira simples, mas poderosa, de integrar variáveis e expressões sem problemas. A adoção de f-strings não apenas melhorará a qualidade do seu código, mas também aumentará sua eficiência.
Para obter mais informações sobre interpolação de strings em Python, consulte os recursos do DataCamp: