Una variabile è un nome
Una variabile in Python è un nome che attacchi a un valore. Scrivi il nome, un segno di uguale e il valore:
Tre variabili, tre valori, tre tipi. Python li tiene tranquillamente uno accanto all'altro, e non hai dovuto dirgli nulla su che tipo di valori fossero. Il valore va dopo il =; il nome va prima.
Una volta che una variabile esiste, puoi usarla ovunque useresti il valore stesso:
I nomi rendono la penultima riga autoesplicativa. È questo il vero vantaggio dei buoni nomi di variabile: codice che si legge come una spiegazione.
L'assegnazione non è matematica
Una cosa che spiazza chi arriva dalle lezioni di matematica: in Python = non significa "uguale". Significa "assegna". Vuol dire "prendi il valore dopo il = e attaccalo al nome che sta prima". Python valuta prima il valore, poi esegue l'assegnazione.
Quindi questo è perfettamente lecito:
La riga count = count + 1 non sostiene che count sia uguale a count più uno (matematicamente impossibile). Dice: calcola count + 1, poi assegna il risultato di nuovo a count. Python valuta prima l'espressione (0 + 1, che dà 1) e solo dopo aggiorna la variabile.
Scriverai count = count + 1 così spesso che Python ha una scorciatoia: count += 1 fa la stessa cosa.
La riassegnazione cambia l'etichetta, non il valore
Una variabile può puntare a un valore diverso ogni volta che vuoi. Il vecchio valore non viene modificato: la variabile semplicemente inizia a riferirsi a qualcos'altro:
Nota l'ultima riga. mood contiene una stringa per due righe e poi all'improvviso contiene un intero. Python non si è lamentato. Questa è la tipizzazione dinamica: le variabili non hanno un tipo fisso, solo i valori ce l'hanno. La flessibilità è utile quando fai prototipi e dolorosa quando una variabile cambia significato dentro una funzione senza che tu te ne accorga. L'abitudine sicura è scegliere un nome adatto a ciò che il valore rappresenta, e poi fare in modo che la variabile rappresenti quella sola cosa per tutta la sua vita.
Le regole per i nomi delle variabili
Python accetta nomi che:
- Iniziano con una lettera o un trattino basso (
_). - Contengono lettere, cifre e trattini bassi.
- Non sono una parola chiave riservata (
if,for,class,returne qualche decina di altre).
Quindi questi sono validi:
E questi no:
2nd_user: non può iniziare con una cifra.user-name: i trattini non sono ammessi (Python li legge come sottrazione).class: parola chiave riservata.user name: niente spazi nei nomi.
I nomi distinguono tra maiuscole e minuscole, come già sai: total, Total e TOTAL sono tre variabili diverse. Python non si accorgerà dell'errore di battitura al posto tuo.
Convenzioni sui nomi
Oltre alle regole rigide, la comunità Python ha delle convenzioni: l'interprete non le impone, ma sono universali in tutto l'ecosistema:
lower_snake_caseper variabili e funzioni normali:retry_count,fetch_profile.UPPER_SNAKE_CASEper le costanti:MAX_RETRIES = 5.PascalCaseper i nomi delle classi (ci arriveremo più avanti).- Trattino basso iniziale (
_something): indica che un nome è pensato per essere privato. Non è imposto, è solo una convenzione. - Trattino basso finale (
class_): ti permette di usare un nome che altrimenti andrebbe in conflitto con una parola chiave.
Rispettale e il tuo codice somiglierà al Python scritto dagli altri.
I nomi dovrebbero descrivere il significato
Un nome di variabile non costa niente da scrivere, ma costa caro da leggere. Spendere un paio di caratteri in più per scegliere un nome che descriva davvero cosa significa il valore risparmia a chi leggerà (di solito il te del futuro) un bel po' di fatica.
Confronta:
Stesso codice, stessa risposta, ma solo la seconda versione ti dice cosa sta succedendo. I nomi brevi (i, n, x) vanno bene in ambiti molto piccoli come i contatori dei cicli, ma al di fuori di quelli scrivi i nomi per esteso.
Assegnazione multipla (con moderazione)
Python ti permette di assegnare lo stesso valore a più variabili in una sola riga:
Oppure di spacchettare più valori in una volta:
Vanno bene entrambe quando rendono il codice più chiaro (come quando spacchetti il valore restituito da una funzione). La prima forma, cioè la catena = = =, merita un attimo di attenzione: tutte e tre le variabili finiscono per riferirsi allo stesso oggetto, e questo conta per i tipi mutabili come le liste (ne riparleremo).
Cosa portarti a casa
name = valuecrea una variabile.- Le variabili non hanno un tipo; i valori sì.
- I nomi seguono poche regole rigide e molte convenzioni: vale la pena rispettare entrambe.
- Un nome descrittivo è la forma di documentazione più economica.
Prossimo argomento: i tipi di valore che Python supporta davvero (interi, float, stringhe, booleani) e perché è utile sapere quale è quale.
Domande frequenti
Come si crea una variabile in Python?
Scegli un nome, mettici dopo un = e metti un valore a destra. age = 30 crea una variabile chiamata age con valore 30. Python capisce il tipo automaticamente: non devi dichiararlo.
Quali sono le regole per i nomi delle variabili in Python?
Un nome può contenere lettere, cifre e trattini bassi, ma non può iniziare con una cifra. Non può essere una parola chiave di Python come if o class. I nomi distinguono tra maiuscole e minuscole: total, Total e TOTAL sono tre variabili diverse. La convenzione della comunità è il lower_snake_case.
Una variabile Python può cambiare tipo?
Sì. Python è a tipizzazione dinamica, quindi una variabile che in un momento contiene un numero può contenere una stringa subito dopo. Questa flessibilità è comoda ma può sorprenderti: se il significato di una variabile cambia a metà di una funzione, di solito è il segnale che serve un nome nuovo.