Neste tutorial, aprenderemos sobre o mecanismo de formatação de strings. A string f é a melhor maneira de formatar a string. O estilo de formatação da string torna-a mais legível, mais concisa e menos propensa a erros. Também é mais rápido que o outro.
Antes de nos aprofundarmos neste tópico, discutiremos primeiro as técnicas usadas antes da corda f.
Formatação de string antiga em Python
Existem duas maneiras principais de formatar a string: % - formatação e str.formato(). Mas ambos os métodos têm algumas limitações. Vamos fazer uma breve introdução a esses métodos fornecidos.
1.% - formatação
É uma forma tradicional de formatar a string, mas os documentos recomendam este método, que contém a seguinte instrução.
'As operações de formatação descritas aqui apresentam uma variedade de peculiaridades que levam a vários erros comuns (como não exibir tuplas e dicionários corretamente).
Usando os literais de string formatados mais recentes ou o str.formato() interface ajuda a evitar esses erros.' - Documentação Oficial .
Como usar % - formatação
Podemos realizar operações integradas usando o operador %. Vamos entender o exemplo a seguir.
criação de tabela oracle
student = 'Michel' 'Hello, %s.' % student
Saída:
Hello Michel
Também podemos usar a tupla para armazenar as múltiplas variáveis. Vejamos o exemplo a seguir.
name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age)
Saída:
Hello Sharma You are 24.
Por que a formatação % não é recomendada
Porque à medida que a variável aumenta e a string é mais longa, nosso código se torna muito menos legível. O código parece confuso. Vejamos o exemplo a seguir.
Exemplo -
first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)')
Saída:
Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel.
Como podemos ver no código acima, o código tornou-se difícil de ler e mais sujeito a erros. É por isso que essa forma de formatar string não é boa.
Método 2.str.format()
É outra forma popular de formatar a string introduzida no Python 2.6. Vamos ver como podemos usá-lo.
Como usar str.format()
É uma melhoria na formatação%. É como uma função interna normal chamada no objeto e esse objeto sendo convertido em uma string.
Vejamos o exemplo a seguir.
Exemplo -
first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)')
Para acessar o elemento do dicionário dentro do método format, podemos passar a chave no método format().
person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age'])
Saída:
Hello Peter, You are 17
Por que o método str.format() não é recomendado?
O str.format() é muito eficiente que o método %-format, mas ainda pode ser bastante detalhado quando lidamos com vários parâmetros.
Método F-string
É um novo mecanismo de formatação de string introduzido pelo PEP 498. Também é conhecido como Interpolação de String Literal ou mais comumente como Strings F. (caractere f precedendo a string literal). O foco principal deste mecanismo é facilitar a interpolação.
Quando prefixamos a string com a letra 'F, a string se torna a própria string f. A string f pode ser formatada da mesma forma que a str.formato() método. A string F oferece uma maneira conveniente de incorporar expressões Python dentro de literais de string para formatação.
Exemplo -
# Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.')
Saída:
Hello, My name is Tushar and I'm 28 years old.
No código acima, usamos a string f para formatar a string. Avalia em tempo de execução; podemos colocar todas as expressões Python válidas neles.
Podemos usá-lo em uma única instrução.
0,04 como uma fração
print(f'{2 * 30})'
Saída:
60
No entanto, poderíamos usar em função.
def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.'
Saída:
Sachin Tendulkar is great
A string f também pode ser usada com o objeto de classe. Vamos entender o exemplo a seguir.
Exemplo -
class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}')
Saída:
Keenu Reevs's superhit movie is Matrix.
Explicação -
No código acima, usamos __str__() e __repr__(), representando um objeto como uma string. Portanto, precisamos incluir pelo menos um desses métodos na definição da classe. A string f usará o método __str__(); também podemos usar __repr__() incluindo o sinalizador de conversão! R.
print(f'{ac}') print(f'{ac}'!r)
Saída:
Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit
String F no Dicionário
Temos que tomar cuidado ao trabalhar com chaves de dicionário dentro da string f. Há uma citação diferente para usar chaves de dicionário e string F. Vamos entender o exemplo a seguir.
Exemplo -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Saída:
John is 19 years old.
O método abaixo não é permitido em caso de dicionário.
Exemplo -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Saída:
File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax
Como podemos ver no código acima, alteramos aspas duplas para aspas simples e ocorreu um erro.
Velocidade
A razão para adaptar este estilo de formatação é a sua velocidade. A string f é avaliada em tempo de execução em vez de valores constantes. Ele incorpora expressão dentro de literais de string, usando sintaxe mínima. É rápido porque avalia em tempo de execução, não em um valor constante.
Vamos ver a seguinte comparação de strings.
Exemplo 1:
import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000))
Saída:
0.0022497819736599922
Exemplo - 2:
import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000))
Saída:
0.0025783719611354172
Exemplo - 3:
import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000))
Saída:
instância java de
0.0019360429723747075
Como podemos observar, a string f está no topo da lista.
Aparelho ortodôntico
Para fazer aparecer colchetes no código, você deve usar aspas duplas como segue. Vamos entender o exemplo a seguir.
Exemplo -
f'{{70 + 40}}'
Saída:
{70 + 40}
Se usarmos colchetes triplos, ele exibirá colchetes simples em nossa string. Vamos entender o exemplo a seguir.
Exemplo -
f'{{{90 + 4}}}'
Saída:
{94}
Podemos exibir mais colchetes se usarmos mais do que colchetes triplos.
Exemplo -
f'{{{{70 + 4}}}}'
Saída:
{{70 + 4}}
Barras invertidas
Podemos usar os escapes de barra invertida na parte da string de uma string f. No entanto, não podemos usar barras invertidas para escapar na parte de expressão de uma string f. Vamos entender o exemplo a seguir.
Exemplo -
java concatenar strings
f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}'
Saída:
SyntaxError: f-string expression part cannot include a backslash
Comentários embutidos
Não podemos incluir o símbolo # na expressão. Isso gerará um erro de sintaxe. Vamos entender o exemplo a seguir.
Exemplo -
f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.'
Saída:
SyntaxError: f-string expression part cannot include '#'
Conclusão
Podemos usar qualquer método entre três, mas o método f-string fornece uma maneira mais concisa, legível e conveniente. É mais rápido e menos sujeito a erros. Explicamos quase todos os cenários possíveis fora da corda e por que se deve considerar essa abordagem na programação.