Nozioni di base su NamedTuple
Creare record immutabili e leggeri
Nozioni di base su NamedTuple è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
Che cos'è NamedTuple
Una tupla con nome è una tupla le cui posizioni hanno anche dei nomi. Offre la natura leggera e immutabile di una tupla, insieme a un accesso leggibile tramite attributi. È ideale per piccoli record.
Il problema delle tuple normali
Le tuple normali sono posizionali, quindi è necessario ricordare il significato di ogni indice. Codice come p[0] e p[1] è facile da sbagliare.
point = (1, 2)
print(point[0]) # x?
print(point[1]) # y?Creare con namedtuple
La factory collections.namedtuple crea una nuova sottoclasse di tuple. Passi il nome del tipo e i nomi dei campi.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)Accesso tramite nome
Ora è possibile leggere i campi in base al nome invece che all'indice, rendendo il codice autoesplicativo.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)È pur sempre una tupla
Una tupla con nome è comunque una vera tupla, quindi indicizzazione, spacchettamento e iterazione funzionano normalmente.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)Immutabilità
Come tutte le tuple, le tuple con nome sono immutabili. Tentare di assegnare un campo solleva AttributeError.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
p.x = 99
except AttributeError as e:
print('Cannot modify:', e)Creare una copia modificata
Poiché non è possibile modificarla, utilizzi il metodo _replace() per produrre una nuova istanza con alcuni campi cambiati.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)Convertire in un dizionario
Il metodo _asdict() restituisce i campi come dizionario, caratteristica utile per la serializzazione o la registrazione nei log.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())Esaminare i campi
L'attributo _fields elenca i nomi dei campi. È utile nel codice generico che itera sui campi di un record.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)Valori predefiniti
Fornisca i valori predefiniti con l'argomento defaults. I valori predefiniti si applicano ai campi più a destra, proprio come i valori predefiniti dei parametri di funzione.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))Restituire più valori
Le tuple con nome sono particolarmente utili come valori restituiti dalle funzioni. Invece di restituire una tupla anonima, ne restituisca una con nome, così chi la utilizza può leggere i campi in base al nome.
from collections import namedtuple
Stats = namedtuple('Stats', ['minimum', 'maximum'])
def analyze(nums):
return Stats(min(nums), max(nums))
r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)Verifica rapida
Come si crea una copia modificata di un'istanza di tupla con nome?
Riepilogo
Ha imparato a creare record leggeri e immutabili.
namedtupleaggiunge nomi di campo alle tuple.- È possibile accedere ai campi per nome o per indice; lo spacchettamento continua a funzionare.
- Utilizzi
_replace()per le copie modificate e_asdict()per la conversione. _fieldselenca i nomi;defaultsimposta i valori predefiniti.
Domande Frequenti
La lezione «Nozioni di base su NamedTuple» è gratuita?
Sì — il testo completo di «Nozioni di base su NamedTuple» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Nozioni di base su NamedTuple»?
Creare record immutabili e leggeri Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Nozioni di base su NamedTuple»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La classe Enum
- IntEnum e Flag
- Nozioni di base su NamedTuple
- typing.NamedTuple