As f-strings ou strings formatadas em Python são a nova maneira de formatar strings. Essa funcionalidade foi introduzida no Python 3.6 sob o PEP-498. Também é chamada de \textit{literal string interpolation} (interpolação literal de strings).
Por que precisamos de f-strings?
O Python oferece várias maneiras de formatar uma string. Vamos dar uma rápida olhada nelas e quais são os problemas que elas têm.
-
% formatação – ótimo para formatação simples, mas suporte limitado para strings, inteiros, duplos apenas. Não podemos usá-lo com objetos.
-
Template Strings – é muito básico. Template strings funcionam com argumentos de palavra-chave como dicionário apenas. Não podemos chamar nenhuma função e os argumentos devem ser strings.
-
String format() – A função format() de String em Python foi introduzida para superar os problemas e as características limitadas da formatação %- e das strings de modelo. No entanto, é muito verbosa. Vamos ver sua verbosidade com um exemplo simples.
>>> idade = 4 * 10 >>> 'Minha idade é {idade}.'.format(idade=idade) 'Minha idade é 40.'
As f-strings em Python funcionam quase da mesma forma que a função format(), mas removem toda a verbosidade que a função format() tem. Vamos ver como podemos formatar facilmente a string acima usando f-strings.
>>> f'My age is {age}'
'My age is 40.'
As f-strings em Python foram introduzidas para ter uma sintaxe mínima para formatação de strings. As expressões são avaliadas em tempo de execução. Se estiver utilizando o Python 3.6 ou versão superior, você deve usar f-strings para todas as suas necessidades de formatação de strings.
Exemplos de f-strings Python
Vamos dar uma olhada em um exemplo simples de f-strings.
name = 'Pankaj'
age = 34
f_string = f'My Name is {name} and my age is {age}'
print(f_string)
print(F'My Name is {name} and my age is {age}') # f and F are same
name = 'David'
age = 40
# f_string já foi avaliado e não mudará agora
print(f_string)
Saída:
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
O Python executa as instruções uma por uma e uma vez que as expressões f-string são avaliadas, elas não mudam mesmo se o valor da expressão mudar. É por isso que nos trechos de código acima, o valor de f_string permanece o mesmo mesmo depois que as variáveis ‘name’ e ‘age’ mudaram na parte posterior do programa.
1. f-strings com expressões e conversões
Podemos usar f-strings para converter datetime para um formato específico. Também podemos executar expressões matemáticas em f-strings.
from datetime import datetime
name = 'David'
age = 40
d = datetime.now()
print(f'Age after five years will be {age+5}') # age = 40
print(f'Name with quotes = {name!r}') # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')
Saída:
Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018
2. f-strings suportam strings raw
Também podemos criar strings raw usando f-strings.
print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')
Saída:
Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831
3. f-strings com objetos e atributos
Também podemos acessar atributos de objetos em f-strings.
class Employee:
id = 0
name = ''
def __init__(self, i, n):
self.id = i
self.name = n
def __str__(self):
return f'E[id={self.id}, name={self.name}]'
emp = Employee(10, 'Pankaj')
print(emp)
print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')
Resultado:
E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10
4. f-strings chamando funções
Também podemos chamar funções na formatação de f-strings.
def add(x, y):
return x + y
print(f'Sum(10,20) = {add(10, 20)}')
Resultado: Soma(10,20) = 30
5. f-string com espaços em branco
Se houver espaços em branco no início ou no final da expressão, eles são ignorados. Se a parte da string literal contiver espaços em branco, eles são preservados.
>>> age = 4 * 20
>>> f' Age = { age } '
' Age = 80 '
6. Expressões lambda com f-strings
Também podemos usar expressões lambda dentro de expressões f-string.
x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')
print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')
Resultado:
Lambda Example: 20.45
Lambda Square Example: 25
7. Exemplos diversos de f-strings
Vamos dar uma olhada em alguns exemplos diversos de f-strings em Python.
print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')
Resultado:
quoted string
{ 40 }
{40}
Isso é tudo para strings formatadas em Python, também conhecidas como f-strings.
Você pode conferir o script completo em Python e mais exemplos em nosso Repositório no GitHub.
Referência: PEP-498, Documentação Oficial
Source:
https://www.digitalocean.com/community/tutorials/python-f-strings-literal-string-interpolation