Le Variabili
Per definire variabili in Python, è sufficiente utilizzare l'operatore di assegnamento (=
) come nei seguenti esempi:
numero = 10
stringa = "Python"
lista = [1, 2, 3]
Come si vede, in Python non è necessario né definire le variabili prima di utilizzarle, né specificare il loro tipo.
Differenze con altri linguaggi
In linguaggi come C, le variabili fanno riferimento a specifiche locazioni di memoria che hanno una dimensione fissa che dipende dal loro tipo (per questo è necessario specificare il tipo quando si dichiara una variabile). In Python invece, gli oggetti hanno un tipo specifico (numero, stringa, lista, etc.), e le variabili sono solo "etichette" che si si riferiscono a un determinato oggetto.
Per capire meglio questo fondamentale concetto, possiamo vedere un semplice esempio.
/* Codice C */
int x;
x = 10;
x = 20;
In questo codice C:
- viene definita una variabile
x
di tipoint
(cioè grande abbastanza per contenere un numero intero); - il valore
10
viene salvato nella locazione di memoria associata ax
; - il valore
20
viene salvato nella locazione di memoria associata ax
, sovrascrivendo il10
.
# codice Python
x = 10
x = 20
Anche se questo codice Python può sembrare molto simile, quello che accade è diverso:
- l'oggetto
10
viene creato, e l'operazione di assegnamento fa in modo che la variabilex
si riferisca a questo oggetto; - l'oggetto
20
viene creato, e la variabile/etichettax
viene "spostata" da10
a20
; - siccome non ci sono più variabili che fanno riferimento all'oggetto
10
, il garbage collector lo eliminirà automaticamente.
In entrambi questi esempi, il valore finale associato con la variabile x
sarà 20
.
Come abbiamo detto precedentemente, in Python le variabili non hanno tipo e possono riferirsi a qualsiasi tipo di oggetto. Il codice seguente è quindi perfettamente valido in Python:
x = 10
x = "Python"
x = [1, 2, 3]
In questo esempio la variabile/etichetta x
viene "spostata" dall'intero 10
alla stringa "Python"
, e infine alla lista [1, 2, 3]
.
Tipi di dato
Python possiede sia i classici tipi di dato, comuni alla maggior parte dei linguaggio di programmazione, ma anche diversi tipi più potenti e flessibili. Ecco una tabella che elenca alcuni dei tipi di dati più comuni in Python:
Tipo di dato | Nome | Descrizione | Esempi |
---|---|---|---|
Intero | int |
Intero di dimensione arbitraria | -42 , 0 , 1200 , 999999999999999999 |
Reale | float |
Numero a virgola mobile | 3.14 , 1.23e-10 , 4.0E210 |
Booleano | bool |
Per valori veri o falsi | True , False |
Complesso | complex |
Numeri complessi con parte reale e immaginaria | 3+4j , 5.0+4.1j , 3j |
Stringhe | str |
Usata per rappresentare testo | '' , 'stefano' , "l'acqua" |
Bytes | bytes |
Usata per rappresentare bytes | b'' , b'\x00\x01\x02' , b'Python' |
Liste | list |
Una sequenza mutabile di oggetti | [] , [1, 2, 3] , ['Hello', 'World'] |
Tuple | tuple |
Una sequenza immutabile di oggetti | () , (1, 2, 3) , ('Python', 3) |
Insiemi | set /frozenset |
Un'insieme di oggetti unici | {1, 2, 3} , {'World', 'Hello'} |
Dizionari | dict |
Una struttura che associa chiavi a valori | {} , {'nome': 'Ezio', 'cognome': 'Melotti'} |
Nelle prossime lezioni affronteremo più in dettaglio questi tipi di dato e vedremo le loro caratteristiche.
Nomi di variabili
Ricordiamo che le regole da seguire nella scelta dei nomi delle variabili è simile a quella dei più comuni linguaggi di programmazione, in particolare:
- ogni nome di variabile deve iniziare con una lettera o con il carattere underscore (
_
), e può essere seguita da lettere, numeri, o underscore; - esistono delle parole riservate (keyword) che non possono essere utilizzate come nomi di variabili:
False
,None
,True
,and
,as
,assert
,break
,class
,continue
,def
,del
,elif
,else
,except
,finally
,for
,from
,global
,if
,import
,in
,is
,lambda
,nonlocal
,not
,or
,pass
,raise
,return
,try
,while
,with
,yield
; - Python è un linguaggio case-sensitive, che distingue tra nomi di variabili composti da caratteri minuscoli e maiuscoli;
- in Python 3 è possibile (ma generamente sconsigliato) usare caratteri accentati o in altri alfabeti nei nomi delle variabili, ad esempio:
età = 20
.
La PEP 8 include una sezione riguardante le convenzioni da usare con i nomi delle variabili.
Assegnamento multiplo
Una singolare possibilità offerta da Python è rappresentata dall’assegnamento multiplo, che permette di inizializzare più variabili direttamente sulla stessa riga di codice. Per capire quest’ultimo concetto, basta osservare l’esempio seguente:
>>> a, b, c = 2, 3, 5 # assegnamento multiplo
>>> a * b + c
11
>>> a
2
>>> b
3
>>> c
5
I commenti
In Python è possibile usare il carattere #
per aggiungere commenti al codice. Ogni riga di commento deve essere preceduta da un #
, ed è anche possibile aggiungere commenti in seguito a istruzioni:
# Questo commento occupa diverse righe, e ogni riga
# è preceduta da un # per indicare a Python di
# ignorarle tutte
a = 3 # questo commento segue un'istruzione
Python ignorerà automaticamente tutto ciò che segue il carattere #
fino al termine della riga.
La PEP 8 include anche una sezione riguardante i commenti.