6 principais recursos úteis do Python 3.10
O Python 3.10 se orgulha de ser uma das versões mais estáveis disponíveis para download pelos usuários e será lançado ainda este ano. A versão recém-lançada virá com muitas mudanças perceptíveis, como funcionalidades fáceis de usar para programadores novatos e experientes.
As melhorias gritantes na nova versão do Python incluem a introdução de correspondência de padrões estruturais, melhores mensagens de erro, novos operadores de união, números de linha precisos para depuração e muito mais.
Aqui está o que você precisa saber sobre Python 3.10:
Correspondência de padrões estruturais em Python 3.10
O Structural Pattern Matching torna a escrita de código uma tarefa fácil e continua a ser um dos destaques proeminentes da última versão do Python. Python visa melhorar as instruções pré-existentes de caso de correspondência presentes nas versões anteriores da linguagem de programação. É feita uma atualização para as instruções de caso de correspondência existentes no Python.
Vamos dar uma olhada rápida nas implementações de Correspondência de Padrão Estrutural:
A instrução match-case já faz parte da linguagem Python há algum tempo. Esta instrução é basicamente usada para evitar o trabalho tedioso de escrever a instrução if-else várias vezes.
Você pode comparar com objetos com propriedades semelhantes usando este recurso na nova construção.
match media_object:
case Image(type="jpg"):
# Return as-is
return media_object
case Image(type="png") | Image(type="gif"):
return render_as(media_object, "jpg")
case Video():
raise ValueError("Can't extract frames from video yet")
case other_type:
raise Exception(f"Media type {media_object} can't be handled yet")
A nova biblioteca python reconhece objetos como jpg, gif e vídeos. Este código pode ser executado perfeitamente sem gerar um erro.
2. Mensagens de erro aprimoradas
Todo codificador provavelmente entende a importância dos erros ao escrever o código e como alguns tipos de erro podem ser irritantes. As versões anteriores do Python geravam mensagens de erro assim que surgiam problemas de sintaxe. Isso pode ser devido à sintaxe errada, palavras-chave ausentes, palavras-chave incorretas ou com erros ortográficos, entre outros problemas.
Essas mensagens de erro estavam longe de ser perfeitas, pois era difícil para iniciantes (às vezes, até mesmo usuários avançados) identificar a verdadeira causa do erro em seus códigos. Como programador, o Google continua a ser seu aliado para decifrar o motivo por trás das diferentes mensagens de erro.
Por exemplo, muitas pessoas podem não saber por que o Python gera o seguinte erro:
SyntaxError: unexpected EOF while parsing error message.
A falta de clareza em tais declarações levou a mais nova versão do Python a melhorar seu conjunto existente de mensagens de erro.
As mensagens mais antigas foram substituídas por mensagens de erro fáceis de entender, como:
{nunca foi fechado inesperado EOF durante a análise
Algumas outras mudanças incluem:
Erros de atributo como:
from collections import namedtoplo
o módulo 'coleções' não tem o atributo 'namedtoplo'. Você queria dizer namedtuple?
As mensagens NameError são modificadas para se parecerem com:
new_var = 5
print(new_vr)>
NameError: o nome 'new_vr' não foi definido. Você quis dizer: new_var?
3. Gerenciadores de contexto entre parênteses
Os novos gerenciadores de contexto entre parênteses podem tornar seu código mais elegante. Mesmo que não seja um recurso importante, pode facilmente tornar seu código menos desajeitado. Esse recurso é benéfico se você trabalha em equipe e seu código precisa ser estruturado.
Imagine escrever uma declaração como:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout:
fout.write(fin.read())
O código acima funciona, mas a primeira linha é muito longa e parece desajeitada. Você pode quebrar a linha usando uma barra invertida ( ) e fazer o código parecer estruturado:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout: fout.write(fin.read())
Com a introdução do novo gerenciador de contexto entre parênteses, você também pode quebrar a linha usando parênteses:
with (open('file1.txt', 'r') as fin,
open('file2.txt', 'w') as fout):
fout.write(fin.read())
4. Novo tipo de operador de união
Um recurso pequeno, mas útil no Python 3.10 é o novo tipo de operador de união. Cada versão do Python vem com um conjunto predefinido de recursos de dicas de tipo.
O operador de união inclui lógica condicional; por exemplo, int ou float pode ser escrito como Union [X, Y] . O novo operador de união também pode ser expresso como int | float .
A introdução de um novo operando de união no Python 3.10 economiza tempo e faz com que o código pareça bem definido.
Por exemplo:
def f(x: int | float) -> float:
return x * 3.142
f(1) # pass
f(1.5) # pass
f('str') # linter will show annotation error
5. Números de linha precisos para depuração
Você deve ter notado muitas vezes antes que o rastreamento de erro não o redireciona para a linha correta onde ocorreu um erro. Isso torna a depuração difícil para codificadores que acabaram de começar a escrever código.
O rastreamento de erros falho é especialmente evidente ao escrever sys.settrace e ferramentas relacionadas em Python. A versão mais recente melhora isso significativamente e você pode ver os números das linhas precisas quando ocorre um erro.
Para trazer um número de linha mais preciso, o Python 3.10 muda sua confiabilidade do atributo co_Inotab atual e usa o novo atributo do método co_lines () . Este atributo funciona de forma que f_lineo sempre contenha o número exato da linha.
1. for (
2. x) in [1]:
3. pass
4. return
6. Avaliação adiada de anotações
No Python, a avaliação da anotação de tipo é realizada no momento da definição da função. Isso significa que as anotações de tipo são avaliadas linha por linha de cima para baixo.
Mesmo que possa parecer a melhor opção, ainda existem dois problemas para essa abordagem:
- As dicas de tipo referem-se a tipos que ainda não foram definidos e não funcionam; essas dicas precisam ser expressas como strings.
- As importações do módulo diminuíram conforme as dicas de tipo são executadas em tempo real.
Para evitar problemas de execução, as anotações são armazenadas em _anotações_ e a avaliação é realizada em conjunto. Isso permite a referência direta conforme as importações de módulo são executadas primeiro, reduzindo assim o tempo de inicialização.
Trabalhando com os recursos mais recentes do Python 3.10
A versão mais recente do Python será lançada em 4 de outubro de 2021; ele promete corrigir os bugs que estão presentes nas versões existentes. As versões a seguir melhorarão a versão 3.10 atual.
O mapeamento de padrão estrutural é o destaque desta nova atualização e torna a escrita de códigos para objetos semelhantes mais simples. Outros recursos, como gerenciadores de contexto entre parênteses e o novo tipo Operadores de união, visam tornar o código mais simples e eficiente.
No entanto, existem algumas técnicas excelentes de tratamento de exceções nas versões existentes do Python. Você pode fazer bom uso das funcionalidades do Python.