Search
Close this search box.
As novidades em f-strings do Python 3.12
aprendiz artificial

Posts Relacionados:

No último dia 2, foi liberada a versão 3.12 do Python. Veja as novidades em f-strings dessa nova versão e como elas se tornaram mais flexíveis e concisas.

Receba nossa newsletter

No dia 2 de outubro, foi liberada a versão 3.12 do Python. Ela contém várias novidades e otimizações.

Entre algumas das melhores novidades estão mensagens de erro muito mais aprimoradas, com a inclusão de mais exceções potencialmente causadas por erros de digitação. As novas mensagens agora fazem sugestões bem compreensíveis ao usuário, o que facilita muita a implementação de códigos.

Também foram feitas melhorias nas f-strings (abreviação de formatted string literals) que ficaram muito mais flexíveis e capazes de realizar várias coisas que não eram possíveis antes. Essas novidades em f-strings serão o tema deste post.

f-strings

No Python, f-strings são usadas para formatação e interpolação de strings. Elas foram introduzidas no Python 3.6 e rapidamente se popularizaram em função de suas sintaxes simples e legíveis. Anteriormente, interpolações de variáveis em strings eram feitas com o método .format().

				
					linguagem = "Python"
minha_string = "Minha linguagem de programação preferida é o {}.".format(linguagem)

				
			

Com a introdução de f-strings, basta adicionar uma letra f (maiúscula ou minúscula) antes da string para realizar uma interpolação.

				
					linguagem = "Python"
minha_string = f"Minha linguagem de programação preferida é o {linguagem}."

				
			

Novidades em f-strings

Mas a introdução de f-strings tinha várias limitações que a versão atual do Python superou. Vamos ver as principais.

Reutilização de aspas

Até o Python 3.11, não era permitido reutilizar as mesmas aspas numa f-string (por exemplo, aspas duplas usadas em sequência como mostrado abaixo).

				
					>>> songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
>>> f"Essa é a minha playlist: {", ".join(songs)}"
  File "<stdin>", line 1
    f"Essa é a minha playlist: {", ".join(songs)}"
                                 ^
SyntaxError: f-string: expecting '}'
				
			

Isso forçava os usuários a terem que utilizar aspas diferentes (combinações de aspas simples e duplas, por exemplo). Veja um exemplo desse tipo de solução:

				
					>>> songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
>>> f"Essa é a minha playlist: {', '.join(songs)}"
'Essa é a minha playlist: Take me back to Eden, Alkaline, Ascensionism'
				
			

A nova versão corrige essa limitação.

				
					>>> songs = ["Take me back to Eden", "Alkaline", "Ascensionism"]
>>> f"Essa é a minha playlist: {", ".join(songs)}"
'Essa é a minha playlist: Take me back to Eden, Alkaline, Ascensionism'
				
			

Com essa correção, aninhar várias strings, o que, na prática, acabava sendo impossível no Python 3.11, deixou de ser um problema.

				
					>>> f"{f"{f"{f"{f"{f"{1+1+2}"}"}"}"}"}"
'4'
				
			

Expressões e comentários multilinhas

No Python 3.11, as expressões f-string devem ser definidas em uma única linha. O Python 3.12 não possui essa limitação.

				
					>>> f"Essa é minha frase: {", ".join([
...     'Eu',  
...     'sou',             
...     'uma' ,
...     'string'          
... ])}"
'Essa é minha frase: Eu, sou, uma, string'
				
			

Além disso, o Python 3.11 não permite usar barra invertida, o que é necessário para indicar uma nova linha. Frequentemente, essas proibições tornam as strings mais difíceis de serem lidas e mais limitadas. No Python 3.12, isso mudou.

				
					>>> palavras = ["Eu", "sou", "uma", "string"]
>>> print(f"Essa é minha frase: {"\n".join(palavras)}")
Essa é minha frase: Eu
sou
uma
string
				
			

A permissão para usar barra invertida em f-strings também possibilita agora o uso de carácteres unicode.

				
					>>> palavras = ["Eu", "sou", "uma", "string"]
>>> print(f"Essa é minha frase: {"\N{BLACK HEART SUIT}".join(palavras)}")
Essa é minha frase: Eu♥sou♥uma♥string
				
			

Comentários em expressões multilinhas

Outra novidade é a possibilidade de inserir comentários em f-strings multilinhas.

				
					>>> f"Essa é minha frase: {", ".join([
...     'Eu',  # essa é a palavra 1
...     'sou', # essa é a palavra 2            
...     'uma' , # essa é a palavra 3
...     'string' # essa é a palavra 4           
... ])}"
'Essa é minha frase: Eu, sou, uma, string'

				
			

Mensagens de erros mais compreensíveis

A última novidade que vamos mencionar se refere às mensagens de erro. Elas melhoraram muito na nova versão do Python e agora contam com sugestões mais compreensíveis que facilitam bastante as correções. Veja o exemplo abaixo com um erro numa f-string:

				
					>>> my_string = f"{x z y}" + f"{1 + 1}"
  File "<stdin>", line 1
    my_string = f"{x z y}" + f"{1 + 1}"
                   ^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
				
			

Para quem quer conhecer a lista completa de todas as novidades, visite o site oficial.

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial