0Pricing
Python Academy · Lezione

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.

  • namedtuple aggiunge 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.
  • _fields elenca i nomi; defaults imposta 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

  1. La classe Enum
  2. IntEnum e Flag
  3. Nozioni di base su NamedTuple
  4. typing.NamedTuple
← Torna a Python Academy