
La funzione repr() in Python
Oggi parleremo della funzione repr() di Python
repr()
Si tratta di una funzione integrata di Python che restituisce una stringa che rappresenta l'oggetto passato come argomento.
L'obiettivo di repr() è fornire una rappresentazione dell'oggetto, che idealmente dovrebbe essere valida codice Python che può essere utilizzato per ricreare l'oggetto.
Se questo non è possibile, la stringa dovrebbe comunque essere informativa e chiarire lo stato dell'oggetto. Ad esempio può essere utilizzata per registrare delle informazioni in un file di log o per fare il debugging del programma.
Vediamo qualche esempio pratico per capire meglio come funziona repr().
Esempio 1: Oggetti base
Considera un oggetto semplice come un numero intero:
x = 42
Ora utilizza repr() indicando come argomento la variabile x.
print(repr(x))
La funzione restituisce lo stesso valore in formato stringa.
'42'
Come possiamo vedere, `repr()` fornisce una rappresentazione della stringa che include le virgolette, mentre la variabile contiene un numero intero.
Esempio 2: Liste e dizionari
Vediamo come `repr()` funziona con strutture dati più complesse come liste e dizionari:
Crea una lista con alcuni valori numerici e alfanumerici.
lista = [1, 2, 3, "quattro"]
Se utilizzi repr() indicando la lista come argoment, questa ti restituisce il contenuto sotto forma di stringa
print(repr(lista))
Output: '[1, 2, 3, 'quattro']'
In questo modo se vuoi creare un'altra lista con gli stessi contenuti puoi farlo facilmente.
Lo stesso risultato puoi ottenerlo con un dizionario.
dizionario = {"a": 1, "b": 2}
Anche in questo caso repr() restituisce il contenuto del dizionario in una stringa.
print(repr(dizionario))
"{'a': 1, 'b': 2}"
In questi casi, repr() restituisce una stringa che mostra chiaramente la struttura e il contenuto delle liste e dei dizionari.
Esempio 3: Oggetti e classi
Vediamo ora un esempio con un oggetto personalizzato.
Supponi di avere una classe `Persona`:
class Persona:
def __init__(self, nome, eta):
self.nome = nome
self.eta = eta
def __repr__(self):
return f"Persona(nome={self.nome!r}, eta={self.eta!r})"
In questa classe è implementato il metodo speciale `__repr__()`
Questo metodo viene chiamato automaticamente quando utilizzi la funzione repr() su un oggetto della classe.
Ad esempio, crea un'istanza della classe
p = Persona("Tom", 25)
Poi utilizza la funzione repr() indicando l'oggetto come argomento.
print(repr(p))
In questo caso la funzione chiama il metodo __repr__ dell'oggetto e stampa a video la stringa personalizzata.
'Persona(nome='Tom', eta=25)'
La stringa restituita fornisce una rappresentazione chiara dell'oggetto `Persona`.
Differenza tra le funzioni repr() e str(). È importante distinguere tra queste due funzioni. Entrambe restituiscono una stringa. Tuttavia, la funzione repr() accede all'attributo `__repr__` dell'oggetto. Mentre la funzione str() accede all'attributo `__str__` dell'oggetto. In generale repr() è usato dagli sviluppatori mentre str() è pensato per restituire una stringa leggibile e user-friendly utile per gli utenti finali.
Spero che questa guida ti abbia chiarito le idee su come e quando usare la funzione repr().