Variabili, tipi di dato e operatori in Python
int, float, str, bool, None e gli operatori aritmetici e di confronto
Una variabile è un nome che punta a un valore conservato in memoria. In Python non serve dichiarare in anticipo di che tipo sarà quel valore: l'interprete lo riconosce da solo, osservando cosa gli viene assegnato. Questo comportamento si chiama tipizzazione dinamica.
Una variabile è come un'etichetta attaccata a una scatola, non la scatola stessa. Puoi staccare l'etichetta da una scatola di libri e attaccarla a una scatola di vestiti in qualsiasi momento: è quello che succede quando riassegni una variabile a un valore di tipo diverso.
1. Assegnare una variabile
In Python si assegna un valore a una variabile con il segno =, senza nessuna parola chiave davanti (niente var, let o simili). Per convenzione, i nomi delle variabili si scrivono in minuscolo, con l'underscore per separare più parole (snake_case).
eta = 34
nome = "Marco"
prezzo = 19.90
attivo = True
2. Numeri interi e decimali: int e float
I numeri senza virgola sono di tipo int (interi), quelli con la virgola di tipo float (decimali). La funzione type() restituisce il tipo effettivo di un valore, utile per verificarlo quando serve.
eta = 34
prezzo = 19.90
print(type(eta)) # <class 'int'>
print(type(prezzo)) # <class 'float'>
Fonte: il riferimento ufficiale «Built in Types» documenta i tipi numerici int, float e complex.
3. Testo: le stringhe str
Una stringa (str) è una sequenza di caratteri racchiusa tra virgolette. Python non fa nessuna differenza tra apici singoli e doppi: sono perfettamente equivalenti, l'importante è chiudere la stringa con lo stesso simbolo con cui è stata aperta.
nome = "Marco"
saluto = 'Ciao'
Fonte: il riferimento ufficiale «Text Sequence Type str» descrive le stringhe e la loro sintassi.
4. Vero o falso: bool, e il valore None
Il tipo bool ha solo due valori possibili, True e False, sempre con l'iniziale maiuscola. A parte, esiste anche None: un valore speciale che rappresenta l'assenza di un valore, usato per esempio come risposta di una funzione che non ha nulla da restituire.
attivo = True
risultato = None
Fonte: il riferimento ufficiale documenta il tipo booleano e l'oggetto None nella sezione «Built in Types».
5. Tipizzazione dinamica: una variabile può cambiare tipo
Dato che il tipo appartiene al valore e non al nome della variabile, la stessa variabile può essere riassegnata a un valore di tipo completamente diverso in qualsiasi punto dello script.
x = 10
print(type(x)) # <class 'int'>
x = "adesso sono una stringa"
print(type(x)) # <class 'str'>
Attenzione però a non confondere tipizzazione dinamica con l'assenza totale di regole: Python resta un linguaggio fortemente tipizzato, e non converte mai automaticamente un tipo in un altro dentro un'operazione. Sommare un numero e una stringa, per esempio, genera un errore invece di un risultato inatteso.
numero = 5
testo = "5"
print(numero + testo)
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
Per far convivere i due valori serve una conversione esplicita, con str() o int():
print(str(numero) + testo) # '55' (concatenazione di testo)
print(numero + int(testo)) # 10 (somma tra numeri)
6. Operatori aritmetici e di confronto
Oltre alle quattro operazioni di base, Python offre la divisione intera //, il resto della divisione % e l'elevamento a potenza **:
print(7 + 3) # 10
print(7 - 3) # 4
print(7 * 3) # 21
print(7 / 3) # 2.3333333333333335
print(7 // 3) # 2
print(7 % 3) # 1
print(7 ** 3) # 343
Dividere 7 caramelle tra 3 amici, in parti intere e uguali (7 // 3), dà 2 caramelle a testa, con 1 caramella che avanza (7 % 3). La divisione normale (7 / 3) risponde invece a una domanda diversa: quante caramelle spetterebbero a testa se si potessero anche spezzare.
Gli operatori di confronto restituiscono sempre un valore bool:
print(7 == 7) # True (uguale a)
print(7 != 3) # True (diverso da)
print(7 > 3) # True (maggiore di)
print(7 <= 3) # False (minore o uguale a)
In sintesi
Una variabile in Python è un'etichetta che punta a un valore, e non serve dichiararne il tipo: lo decide il valore assegnato, tra int, float, str, bool o None. La stessa variabile può cambiare tipo nel corso dello script, ma le operazioni tra tipi incompatibili restano comunque bloccate: la tipizzazione è dinamica, non debole. Con gli operatori aritmetici e di confronto hai già gli strumenti per far fare calcoli e verifiche al tuo codice. Nella prossima pillola della serie vedremo le stringhe più da vicino: slicing, metodi utili e le f string.
Commenti (0)
Registrati per commentare, fare domande e proporre l'argomento della prossima pillola (oppure accedi se hai già un account).
Nessun commento. Sii il primo a scrivere qualcosa.