Le variabili in Python sono analoghe alle variabili di tutti gli altri linguaggi di programmazione: contenitori per valori (nello specifico riferimenti agli spazi di memoria che contengono determinate informazioni).

Tipizzazione

In particolare, vogliamo fare alcuni cenni al sistema di tipi che si usa in Python:

  • Python è strongly typed: le regole di casting fra tipo non possono cambiare in maniera inaspettata;
  • Python è dynamically typed: gli oggetti a tempo di esecuzione hanno un tipo, non le variabili, perciò i tipi non vengono assegnati prima del tempo di esecuzione;
  • Python è implicitly typed: i tipi degli oggetti vengono ricavati dai valori che gli vengono assegnati;
  • Python è case sensitive;
  • Python è object oriented: tutto è un oggetto.

I tipi predefiniti del Python sono i classici:

  • Numeri interi;
  • Stringhe;
  • Booleani. Per quanto riguarda le Collezioni, si hanno i 4 tipi fondamentali:
  • Liste: rappresentate da array dinamiche (non linked list);
  • Dizionari: rappresentati da tabelle hash;
  • Tuple: sono liste con elementi variegati e immutabili. A differenza delle liste, possono essere usate come record di dizionari;
  • Insiemi: rappresentati ancora da tabelle hash (sono effettivamente dizionari verso booleani). I file sono considerati tipi a sé stanti, e infine si ha supporto per le classi.

Riflessione

Per ottenere il tipo di un oggetto a tempo di esecuzione (che ricordiamo è l’unico contesto in cui il concetto di tipo è effettivamente valido), si può usare type():

type(1)       # <class 'int'>
type("fuffa") # <class 'str'>

Cast esplicito

Per effettuare conversioni esplicite di tipo, si può usare la sintassi <tipo>():

i = 10       # type(i) = <class 'int'>
f = float(i) # type(f) = <class 'float'>