Novità di Python 3.11
Python 3.11.2 è la versione più recente del popolare linguaggio di programmazione e include una serie di nuove funzionalità e miglioramenti. In questo articolo del blog, esamineremo alcune delle nuove funzionalità di Python 3.11 e forniremo del codice di esempio per iniziare.
Riepilogo
Python 3.11 è più veloce del 10-60% rispetto a 3.10. Misurato un aumento della velocità di 1,25 volte sulla suite di benchmark standard. exceptionCi sono speedmiglioramenti syntax.
Eccezioni
D'ora in poi puoi sollevare più eccezioni utilizzando i gruppi di eccezioni.
PEP 654 introduce funzionalità linguistiche che consentono a un programma di generare e gestire più eccezioni non correlate contemporaneamente. I tipi incorporatiExceptionGroupeBaseExceptionGrouprendono possibile raggruppare le eccezioni e sollevarle insieme, e la nuovaexcept*sintassi si generalizzaexceptper corrispondere ai sottogruppi dei gruppi di eccezioni.
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
Inoltre puoi aggiungere note alla tua eccezione usando questo puoi dare più informazioni facilmente. Devi catturare l'eccezione usando try exceptquindi devi aggiungere una nota e sollevarla di nuovo
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
Nuovo tipo è aggiungere Selfche è normale self.
Nuove funzionalità relative ai suggerimenti di tipo
Questa sezione copre le principali modifiche che interessano i suggerimenti sul tipo PEP 484 e il typingmodulo.
Ecco un esempio:
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 NotRequiredforniscono un modo semplice per contrassegnare se i singoli elementi in a TypedDictdevono essere presenti. In precedenza, ciò era possibile solo utilizzando l'ereditarietà.
Tutti i campi sono ancora obbligatori per impostazione predefinita, a meno che il parametro total non sia impostato su False, nel qual caso tutti i campi non sono ancora obbligatori per impostazione predefinita. Ad esempio, quanto segue specifica a TypedDictcon una chiave richiesta e una non richiesta:
La creazione di dizionari speciali è un'abilità potente se si desidera creare librerie e ridurre gli errori che possono verificarsi dall'utente.
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
Guarda qui per maggiori informazioni
Accelerazione delle operazioni
- Operazioni binarie
x+x; x*x; x-x;10% - Pedice
a[i]10–25% - Memorizza pedice
a[i] = z10–25% - Chiamate
f(arg)C(arg)20% - Carica variabile globale
printlen[1 ] - Carica attributo
o.attr[ 3] - Metodi di caricamento per chiamata
o.meth()10–20% - Memorizza l'attributo
o.attr = z2% in pyperformance - Sequenza di disimballaggio
*seq8%
Fonte
https://docs.python.org/3/whatsnew/3.11.html

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































