Menu
Coddy logo textTech

Cos'è una variabile?

In programmazione, una variabile è uno spazio con un nome nella memoria che contiene un valore che il tuo programma può leggere e modificare mentre gira. Il nome, come score o user_name, permette al codice di riferirsi al valore senza sapere dove è memorizzato.

Di Kevin Spektor, Cofondatore e CTO

Aggiornato il 24 settembre 2026

Un gioco che tiene il punteggio deve ricordare un numero, aggiungerci punti e mostrarlo alla fine. Quel numero non si può scrivere nel codice, perché è diverso ogni volta che qualcuno gioca. Così il programma riserva un posto in memoria, gli dà un nome come score e usa quel nome ogni volta che gli serve il valore attuale.

Come funziona una variabile

A una variabile succedono tre cose durante un programma:

  1. Creazione. Il programma riserva memoria per un valore e gli associa un nome. In Python succede la prima volta che assegni qualcosa al nome. In Java e C prima dichiari la variabile, con un tipo, come in int score;.
  2. Assegnazione. Un valore viene memorizzato sotto il nome con =. Assegnare di nuovo sostituisce il valore precedente.
  3. Uso. Ovunque il nome compaia in un'espressione, il programma legge il valore che contiene in quel momento.
Start: 0
After one point: 10
Doubled: 20

In ogni riga di assegnazione, prima viene calcolato il lato destro, usando il valore che score ha in quel momento. Poi il risultato viene memorizzato di nuovo sotto lo stesso nome. Il nome resta lo stesso mentre il valore che contiene varia.

Il segno uguale significa "memorizza"

In matematica, x = x + 1 non ha soluzione. In un programma è un'istruzione normale: prendi il valore attuale di x, aggiungi 1 e memorizza il risultato in x. Il segno = è l'operatore di assegnazione, e sposta sempre un valore dal lato destro al nome a sinistra.

Per chiedere se due valori sono uguali, i linguaggi di programmazione usano un altro operatore, ==. L'espressione x == 5 non cambia niente; produce True o False, un booleano.

Il significato matematico è collegato ma non è lo stesso. In algebra, la x di 2x + 3 = 7 rappresenta un unico numero sconosciuto da ricavare. In un programma, una variabile contiene un valore noto che può cambiare mentre il programma gira.

Variabili e tipi di dati

Ogni valore ha un tipo: un numero intero, un numero decimale, un testo, un booleano, una lista. I linguaggi si differenziano nel fatto che la variabile stessa abbia o meno un tipo.

In Python e JavaScript il tipo lo porta il valore, e una stessa variabile può contenere nel tempo valori di tipi diversi. Questo si chiama tipizzazione dinamica:

42 <class 'int'>
forty-two <class 'str'>

In Java, C e C++ la variabile ha un tipo fisso, scelto quando la dichiari. Questa è la tipizzazione statica: il compilatore rifiuta il codice che prova a memorizzare del testo in una variabile int, prima ancora che il programma venga eseguito.

int age = 30;          // Java: type, name, value
String name = "Rosa";
let age = 30;          // JavaScript: can be reassigned
const PI = 3.14159;    // cannot be reassigned

In C il tipo decide anche quanta memoria occupa la variabile. Un int occupa 4 byte su quasi tutti i sistemi attuali, un double 8 e un char esattamente 1. Per tenere molti valori sotto un solo nome, come tutti i punteggi di un gioco, usi un array o una lista e raggiungi ogni valore tramite la sua posizione, come in scores[0].

Scatole ed etichette

Un'immagine comune di variabile è una scatola che contiene un valore. Questa immagine si adatta bene al C: int x; è davvero un'area fissa di memoria, e y = x; copia il valore in una seconda area.

Python funziona più come un sistema di etichette. Ogni valore è un oggetto, e una variabile è un nome attaccato a uno di essi. La differenza si vede quando due nomi si riferiscono alla stessa lista:

5 6
[1, 2, 3, 4]

Con i numeri, y = y + 1 crea un nuovo numero e sposta l'etichetta y su di esso, quindi x si riferisce ancora a 5. Con la lista, b = a non copia niente: entrambi i nomi si riferiscono a un'unica lista, quindi una modifica fatta tramite b si vede anche tramite a. Scrivi b = a.copy() quando vuoi una lista separata. Gli oggetti e gli array in Java e JavaScript si comportano allo stesso modo.

Scope: dove esiste una variabile

Una variabile è visibile solo in una parte del programma, chiamata il suo scope (ambito di visibilità). Una variabile creata dentro una funzione è locale: esiste mentre la funzione gira e sparisce quando la funzione termina. Una variabile creata al livello più alto di un file è globale e si può leggere ovunque in quel file.

Le variabili locali sono più facili da seguire, perché tutte le righe che possono modificarle stanno dentro una sola funzione. I programmi che dipendono da molte variabili globali sono più difficili da correggere per il motivo opposto.

Come dare un nome alle variabili

I buoni nomi dicono cosa significa il valore: total_price, is_logged_in, retries_left. La maggior parte dei linguaggi condivide le stesse regole:

  • un nome è fatto di lettere, cifre e trattini bassi, e non può iniziare con una cifra;
  • un nome non può essere una parola chiave del linguaggio, come if, for o class;
  • i nomi distinguono tra maiuscole e minuscole, quindi total e Total sono due variabili diverse.

Lo stile cambia da linguaggio a linguaggio. Python usa lo snake_case (user_name), mentre Java e JavaScript usano il camelCase (userName). I valori che non devono mai cambiare si scrivono spesso in maiuscolo, come in MAX_SIZE.

Errori comuni

Usare una variabile prima che abbia un valore. Python si ferma con un NameError:

NameError: name 'total' is not defined

Lo stesso errore compare quando un nome è scritto male, perché per il computer totla e total sono nomi diversi.

Scrivere = quando intendi ==. In Python, if x = 5: è un errore di sintassi, quindi te ne accorgi subito. In C e JavaScript, if (x = 5) è codice valido: memorizza 5 in x, e la condizione è sempre vera. Il programma gira e dà risultati sbagliati, un errore logico che può richiedere molto tempo per essere trovato.

Dare due compiti a una variabile. Una variabile che contiene un prezzo all'inizio di una funzione e un conteggio alla fine funziona ancora, ma chiunque legga deve tenere traccia di quale significato sia quello attuale. Dai a ogni significato il suo nome.

Cosa leggere dopo

Le variabili contengono valori, e il passo successivo è sapere quali tipi di valori esistono: leggi cos'è un booleano per vero e falso, e cos'è un array per molti valori sotto un solo nome. La guida alle variabili in Python tratta l'assegnazione, le regole sui nomi e l'assegnazione multipla più in dettaglio, e il corso Python ti fa scrivere e modificare variabili fin dalla prima lezione.

Domande frequenti

Cos'è una variabile in Python?
Una variabile in Python è un nome che fa riferimento a un valore. La crei assegnandole qualcosa, come in age = 30, senza dichiarare alcun tipo, e lo stesso nome può in seguito riferirsi a un valore di un altro tipo. Per convenzione, i nomi delle variabili in Python si scrivono in snake_case.
Qual è una definizione semplice di variabile?
Una variabile è un nome per un valore che un programma conserva e può cambiare. Il nome resta lo stesso mentre il valore sotto può essere sostituito, come un tabellone segnapunti che mantiene la scritta "Casa" mentre il numero sotto sale.
Come si spiega una variabile a un bambino?
Paragonala a una scatola con un'etichetta. L'etichetta è il nome, come score, e la scatola contiene una cosa alla volta. Puoi guardarci dentro per vedere cosa c'è, oppure tirarla fuori e metterci qualcosa di nuovo, e l'etichetta resta la stessa.
Che differenza c'è tra una variabile e una costante?
Il valore di una variabile si può cambiare dopo averlo assegnato, mentre quello di una costante resta fisso una volta assegnato. Java indica le costanti con final, e JavaScript e C usano const. Python non ha costanti imposte dal linguaggio, quindi i programmatori scrivono il nome in maiuscolo, come MAX_USERS, per indicare che non deve cambiare.
Quali tipi di variabili esistono in programmazione?
Le variabili si raggruppano di solito in base a dove sono visibili: le variabili locali esistono dentro una funzione, le variabili globali sono visibili in un intero file o programma, e le variabili di istanza appartengono a un singolo oggetto di una classe. Si descrivono anche in base al tipo di valore che contengono, come intero, numero in virgola mobile, stringa o booleano.
Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA