O que há de novo no Python 3.11
Python 3.11.2 é a versão mais recente da popular linguagem de programação e inclui vários novos recursos e melhorias. Neste artigo do blog, veremos alguns dos novos recursos do Python 3.11 e forneceremos alguns exemplos de código para você começar.
Resumo
O Python 3.11 é 10–60% mais rápido que o 3.10. Mediu um aumento de velocidade de 1,25x no conjunto de benchmark padrão. Há exception, speed, syntaxmelhorias.
Exceções
De agora em diante, você pode gerar várias exceções usando grupos de exceção.
O PEP 654 introduz recursos de linguagem que permitem que um programa gere e manipule várias exceções não relacionadas simultaneamente. Os tipos integradosExceptionGrouptornamBaseExceptionGrouppossível agrupar exceções e criá-las juntas, e a novaexcept*sintaxe generalizaexceptpara corresponder a subgrupos de grupos de exceção.
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
Além disso, você pode adicionar notas à sua exceção usando isso para fornecer mais informações facilmente. Você precisa capturar a exceção usando, try exceptentão você precisa adicionar uma nota e aumentá-la novamente
try:
i = 1 / 0
except Exception as e:
e.add_note("New Note: Zero Division Error")
raise
Traceback (most recent call last):
File "C:/Users/Sarper/Desktop/test.py", line 2, in <module>
i = 1 / 0
ZeroDivisionError: division by zero
New Note: Zero Division Error
O novo tipo é adicionado, Selfo que é normal self.
Novos recursos relacionados a dicas de digitação
Esta seção aborda as principais mudanças que afetam as dicas do tipo PEP 484 e o typingmódulo.
Aqui está um exemplo:
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def create_class(self) -> Self:
return MyClass(3) # returning new class
my_class = MyClass(2)
print(my_class.create_class())
# OUTPUT:
# <__main__.MyClass object at 0x000002477E1D0250>
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def return_class(self) -> Self:
return self # returning self
my_class = MyClass(2)
print(my_class.return_class())
# OUTPUT:
<__main__.MyClass object at 0x0000014B89E71350>
Requirede NotRequiredfornecer uma maneira direta de marcar se itens individuais em um TypedDictdevem estar presentes. Anteriormente, isso só era possível usando herança.
Todos os campos ainda são obrigatórios por padrão, a menos que o parâmetro total seja definido como False, caso em que todos os campos ainda não são obrigatórios por padrão. Por exemplo, o seguinte especifica um TypedDictcom uma chave obrigatória e outra não obrigatória:
A criação de dicionários especiais é uma habilidade poderosa se você deseja criar bibliotecas e reduzir erros que podem ocorrer do usuário.
class Movie(TypedDict):
title: str
year: NotRequired[int]
m1: Movie = {"title": "Black Panther", "year": 2018} # OK
m2: Movie = {"title": "Star Wars"} # OK (year is not required)
m3: Movie = {"year": 2022} # ERROR (missing required field title)
class Movie(TypedDict, total=False):
title: Required[str]
year: int
asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit socket sqlite3 string sys sysconfig tempfile threading time tkinter traceback typing unicodedata unittest venv warnings zipfile
Veja aqui mais informações
Aceleração de operação
- Operações binárias
x+x; x*x; x-x;10% - Subscrito
a[i]10–25% - Subscrito da loja
a[i] = z10–25% - Chamadas
f(arg)C(arg)20% - Carregar variável global
printlen[1 ] - Carregar atributo
o.attr[ 3] - Carregar métodos para chamada
o.meth()10–20% - Atributo da loja
o.attr = z2% em pyperformance - Sequência de descompactação
*seq8%
Fonte
https://docs.python.org/3/whatsnew/3.11.html





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)