Como Interpolar Strings Facilmente no Python
F-strings do Python para interpolação de strings e formatação
por Joanna Jablonski, 18 de outubro de 2023
As f-strings do Python oferecem uma maneira rápida de interpolar e formatar strings. Elas são legíveis, concisas e menos propensas a erros do que as ferramentas tradicionais de interpolação e formatação de strings, como o método .format()
e o operador de módulo (%
). Uma f-string também é um pouco mais rápida que essas ferramentas!
No final deste tutorial, você entenderá por que as f-strings são uma ferramenta tão poderosa que você deve aprender e dominar como desenvolvedor Python.
Neste tutorial, você aprenderá como:
- Interpolar valores, objetos e expressões em suas strings usando f-strings
- Formatar f-strings usando a mini-linguagem de formatação de strings do Python
- Aproveitar algumas funcionalidades legais das f-strings no Python 3.12 e além
- Decidir quando usar ferramentas tradicionais de interpolação em vez de f-strings
Para aproveitar ao máximo este tutorial, você deve estar familiarizado com o tipo de dado string em Python. Também é útil ter experiência com outras ferramentas de interpolação de strings, como o operador de módulo (%
) e o método .format()
.
Interpolação e formatação de strings antes do Python 3.6
Antes do Python 3.6, você tinha duas ferramentas principais para interpolar valores, variáveis e expressões dentro de literais de string:
- O operador de interpolação de string (
%
), ou operador de módulo - O método
.format()
Aqui estão dois exemplos:
Essas são formas válidas de interpolar valores em strings, mas existem algumas desvantagens. Por exemplo, com o operador de módulo, você precisa lembrar qual é o tipo de cada variável e usar o código de formato adequado (%s para string, %d para inteiro, etc.). Já com o método .format()
, você precisa fornecer os índices ou nomes das variáveis dentro da string e passar os valores correspondentes na chamada do método.
Fazendo interpolação de strings com f-strings no Python
A partir do Python 3.6, as f-strings foram introduzidas como uma nova sintaxe para interpolar e formatar strings. As f-strings permitem que você insira diretamente expressões Python dentro de uma string prefixada com um f
. Aqui está um exemplo:
Com as f-strings, você pode inserir valores e objetos diretamente dentro da string, sem precisar se preocupar com o tipo de dado ou a ordem das variáveis. As expressões Python entre chaves ({}
) são avaliadas em tempo de execução e o resultado é interpolado na string final.
Você também pode realizar formatação adicional dentro das chaves, usando a mini-linguagem de formatação de strings do Python. Aqui está um exemplo:
Neste exemplo, utilizamos os métodos .upper()
e multiplicação *
para formatar o valor da variável name
e age
dentro da string.
Formatando strings com f-strings do Python
As f-strings também suportam formatação mais avançada usando a mini-linguagem de formatação de strings do Python. Com essa linguagem, você pode controlar a precisão numérica, o alinhamento, o preenchimento, o sinal e outras opções de formatação. Veja um exemplo:
Neste exemplo, usamos a especificação de precisão numérica .2f
para limitar o número de casas decimais do valor da variável number
.
Outras funcionalidades relevantes das f-strings
Além da interpolação e formatação básicas, as f-strings do Python também possuem algumas funcionalidades adicionais interessantes.
Usando as representações de string de um objeto em f-strings
Você pode usar a representação de string de um objeto dentro de uma f-string. Para isso, basta fornecer uma expressão !s
dentro das chaves. Veja um exemplo:
Neste exemplo, criamos uma classe Person
com um método __str__
que retorna uma representação de string formatada para a instância. Na f-string, usamos a expressão !s
para inserir a representação de string da instância person
.
Expressões auto-explicativas para depuração
As f-strings podem conter expressões auto-explicativas para ajudar na depuração do código. Basta adicionar uma expressão entre chaves =
dentro da f-string. Veja um exemplo:
Neste exemplo, interpolamos a expressão result=
seguida pelo valor da variável result
dentro da string. Isso torna o resultado auto-explicativo e facilita a identificação de erros durante a depuração.
Comparando o desempenho: f-strings vs. ferramentas tradicionais
As f-strings são um pouco mais rápidas do que as ferramentas tradicionais de interpolação e formatação de strings, como o operador de módulo (%
) e o método .format()
. No entanto, a diferença de desempenho pode ser negligenciável na maioria dos casos. É importante escolher a sintaxe que melhor se adapta ao seu código e que seja mais legível e fácil de manter.
Atualizando f-strings: Python 3.12 e além
O Python 3.12 e versões posteriores introduziram algumas melhorias nas f-strings.
Usando aspas
Antes do Python 3.12, era necessário escapar as aspas dentro das f-strings usando uma barra invertida (\
). No Python 3.12 e além, você pode usar as duplas aspas simples (''
) ou aspas duplas (""
) dentro de uma f-string sem escapar:
Usando barras invertidas
Antes do Python 3.12, era necessário escapar as barras invertidas dentro das f-strings utilizando duas barras invertidas (\\
). No Python 3.12 e além, você pode usar uma única barra invertida sem necessidade de escapar:
Escrevendo comentários inline
No Python 3.12 e versões posteriores, você pode escrever comentários inline dentro de uma f-string, prefixando a expressão com um #
. Isso é especialmente útil para fins de depuração:
Decifrando mensagens de erro das f-strings
Antes do Python 3.12, as mensagens de erro das f-strings podem ser difíceis de entender. No Python 3.12 e além, a mensagem de erro agora contém sugestões claras para corrigir o problema:
Neste exemplo, omitimos o sinal de igual propositalmente e o erro retornado sugere que devemos adicionar o sinal de igual.
Usando ferramentas tradicionais de formatação de strings em vez de f-strings
Apesar das vantagens das f-strings do Python, há casos em que as ferramentas tradicionais de formatação de strings ainda podem ser mais adequadas.
Interpolação de dicionário
Se você precisar interpolar um dicionário em uma string, as f-strings não fornecem uma sintaxe fácil para isso. Nesses casos, é melhor usar o método .format()
ou o operador de módulo (%
).
Avaliação preguiçosa em logs
Se você estiver trabalhando com logs que podem ser custosos de serem gerados, as f-strings podem ser menos eficientes do que a concatenação de strings ou o uso do método .format()
, pois as f-strings avaliam as expressões de forma antecipada.
Consultas de banco de dados SQL
Para realizar consultas de banco de dados SQL, as f-strings não fornecem uma sintaxe que garanta a segurança contra injeção de SQL. Nesses casos, é melhor usar uma biblioteca específica para fazer a formatação das queries.
Internacionalização e localização
Se o seu código precisar lidar com diferentes idiomas e regiões, onde a formatação de datas, números e moedas pode variar, as f-strings podem não ser suficientes para garantir a formatação correta. Nesses casos, é melhor usar bibliotecas específicas de internacionalização e localização, como o módulo locale
e o pacote babel
.
Convertendo strings antigas em f-strings automaticamente
Se você tiver muitas strings antigas que estão sendo interpoladas e formatadas de forma tradicional, pode ser um trabalho árduo convertê-las manualmente para f-strings. Felizmente, existem ferramentas como o 2to3
e o futurize
que podem ajudar a fazer essa conversão de forma automática.
Conclusão
As f-strings do Python são uma adição poderosa à linguagem que simplifica a interpolação e formatação de strings. Elas oferecem uma sintaxe concisa, legível e de alto desempenho. No entanto, é importante considerar as circunstâncias específicas de cada caso e escolher a melhor ferramenta para o trabalho. Com este tutorial, você está pronto para aproveitar ao máximo as f-strings em seus projetos Python. Experimente e divirta-se!