
Il namespace Built-in in Python
Il namespace built-in in Python rappresenta un livello molto speciale di namespace perché contiene le funzioni e i tipi built-in che sono sempre disponibili senza doverli importare. E' disponibile dall'avvio fino alla chiusura dell'interprete Python.
Questo include non solo funzioni come `print()`, `id` e `len()`, ma anche tipi incorporati come `int`, `float`, `dict`, e `list`.
Che cosa sono i Built-ins?
Python viene fornito con un set di funzioni e tipi predefiniti, disponibili in ogni programma senza la necessità di importarli. Questi built-ins sono molto utili per eseguire compiti comuni, come:
- Funzioni: `print()`, `len()`, `type()`, `id()`, `range()`, ecc.
- Tipi: `int`, `float`, `dict`, `list`, `tuple`, `set`, `str`, ecc.
- Eccezioni: `Exception`, `ValueError`, `TypeError`, `KeyError`, ecc.
Questi elementi sono sempre a disposizione perché risiedono nel built-in namespace.
Ad esempio, digita questi comandi sul terminale di Python.
numeri = [1, 2, 3, 4]
# Utilizza la funzione built-in 'len'
print(len(numeri))
Per utilizzare l'istruzione print non devi importarla, perché è una funzione predefinita.
Viene caricata automaticamente quando apri una sessione Python.
4
La stessa cosa avviene quando utilizzi i tipi.
Ad esempio, il tipo 'int' dei numeri interi è un data type predefinito del linguaggio.
numero = 10
Puoi accedere al built-in namespace anche tramite il modulo `builtins`:
import builtins
# Stampa tutte le funzioni e i tipi built-in
print(dir(builtins))
Questo elenco comprende tutto ciò che è disponibile senza specificare un'importazione.
Evita di sovrascrivere il namespace built-in
Python ti offre la flessibilità di personalizzare il comportamento del tuo programma.
È tecnicamente possibile sovrascrivere un built-in, ma è sconsigliato perché può portare a confusione e bug:
Ad esempio, questa funzione sovrascrive la funzione built-in 'print'
def print(messaggio):
return f"Messaggio sovrascritto: {messaggio}"
Il linguaggio Python non te lo impedisce ma, così facendo, non potrai più utilizzare la funzione built-in print durante la sessione o l'esecuzione dello script.
Per ripristinare il comportamento originale devi eliminare la definizione sovrascritta o riavviare l'interprete Python.
Quindi, nonostante la possibilità di sovrascrivere i built-ins, modificare o sostituire i built-ins dovrebbe essere fatto con cautela e solo in casi ben giustificati.