Novedades en Python 3.11
Python 3.11.2 es la versión más reciente del popular lenguaje de programación e incluye una serie de nuevas características y mejoras. En este artículo de blog, veremos algunas de las nuevas características de Python 3.11 y le daremos un código de muestra para que pueda comenzar.
Resumen
Python 3.11 es entre un 10 y un 60 % más rápido que 3.10. Midió una aceleración de 1,25x en el conjunto de referencia estándar. Hay exception, speed, syntaxmejoras.
Excepciones
A partir de ahora, puede generar varias excepciones mediante el uso de grupos de excepción.
PEP 654 introduce funciones de lenguaje que permiten que un programa genere y maneje múltiples excepciones no relacionadas simultáneamente. Los tipos incorporadosExceptionGroupyBaseExceptionGrouphacen posible agrupar excepciones y generarlas juntas, y la nuevaexcept*sintaxis se generalizaexceptpara hacer coincidir subgrupos de grupos de excepciones.
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
También puede agregar notas a su excepción al usar esto, puede brindar más información fácilmente. Necesita capturar la excepción usando, try exceptluego necesita agregar una nota y volver a subirla
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
El nuevo tipo es add Self, que es normal self.
Nuevas funciones relacionadas con las sugerencias de tipo
Esta sección cubre los principales cambios que afectan a las sugerencias de tipo PEP 484 y al typingmódulo.
Aquí hay un ejemplo:
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>
Requiredy NotRequiredproporcionar una forma sencilla de marcar si los elementos individuales en un TypedDictdeben estar presentes. Anteriormente, esto solo era posible mediante la herencia.
Todos los campos siguen siendo obligatorios de forma predeterminada, a menos que el parámetro total se establezca en False, en cuyo caso todos los campos siguen sin ser obligatorios de forma predeterminada. Por ejemplo, lo siguiente especifica una TypedDictcon una clave requerida y una no requerida:
La creación de diccionarios especiales es una capacidad poderosa si desea crear bibliotecas y reducir los errores que pueden ocurrir por parte del usuario.
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
Vea aquí para más información
Aceleración de operaciones
- Operaciones binarias
x+x; x*x; x-x;10% - Subíndice
a[i]10–25% - Almacenar subíndice
a[i] = z10–25% - Llamadas
f(arg)C(arg)20% - Cargar variable global
printlen[1 ] - Cargar atributo
o.attr[ 3] - Cargar métodos para llamada
o.meth()10–20% - Almacenar atributo
o.attr = z2% en pyperformance - Secuencia de descompresión
*seq8%
Fuente
https://docs.python.org/3/whatsnew/3.11.html

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































