Analizziamo adesso gli ultimi tipi di dati in Python, ovvero bytes, numeri e valori booleani: definiamo poi le principali conversioni.
I bytes
A partire da Python 3 è scomparsa la differenziazione tra stringhe normali e stringhe Unicode.
Da ora le stringhe diventano esclusivamente sequenze di caratteri Unicode.
In un prossimo articolo elencheremo le principali differenze tra Python 2 e Python 3.
Siccome i computer ‘parlano’ principalmente solo di byte e di bit piuttosto che di caratteri Unicode, Python 3 introduce un nuovo tipo di dato nativo: i bytes.
Proviamo ad utilizzarlo con una stringa:
L’errore ci indica che non possiamo passare da bytes a string senza indicare espressamente con quale encoding Unicode stiamo interpretando i caratteri.
L’encoding è il processo che descrive la corrispondenza tra i caratteri Unicode (per la precisione “glifi”) e una sequenza di byte.
Uno degli encoding più diffusi è, per esempio, UTF-8 : che è in grado di mappare tutti i caratteri più comuni su un singolo byte.
Vedremo però come, nel caso della nostra stringa, questo sia vero per tutti i caratteri ad eccezione della “é”.
Riproviamo specificando come secondo parametro alcuni tra gli encoding possibili:
Osserviamo che il carattere che indica il tipo di dato bytes è la “b“.
Nel caso dei due encoding latin1 e utf-8, Python ha potuto effettuare la conversione tra caratteri e byte, con l’encoding ascii invece no.
L’eccezione ci dice che non esiste una corrispondenza tra “é” e quell’encoding (nell’errore “position 5“ indica il sesto carattere siccome il primo ha position 0 ).
Proviamo ora a controllare la lunghezza della sequenza di bytes:
Come possiamo notare, l’encoding utf-8 traduce la lettera “é” in due byte distinti, mentre l’encoding latin1 in un unico byte.
Vediamo infine come si utilizzano i due metodi di bytes e di str che permettono di passare da un tipo di dati all’altro: encode() e decode()
I numeri
Qualcuno si domanderà: cosa potrà mai aggiungere Python a un tipo di dati così comune come i dati numerici?
Cominciamo dagli interi e proviamo a calcolare la decimillesima potenza di 2:
Proprio così: non c’è limite alle dimensioni di un numero intero. O meglio, il limite è solo quello fisico della memoria del computer su cui stiamo usando Python.
Ovviamente possiamo usare anche i numeri in virgola mobile.
Attenzione però: in questo caso il limite c’è e dipende dalla piattaforma che stiamo usando:
Possiamo inoltre definire numeri esadecimali con il prefisso “0x”:
Oppure numeri ottali con “0o”:
Ma anche numeri binari con “0b”:
Per i più esigenti esistono anche i numeri complessi, la cui parte immaginaria è identificata dal suffisso “j” o “J”:
Valori Booleani: True, False e None
Anche Python, come ogni linguaggio di programmazione che si rispetti, considera i valori booleani vero e falso, che corrispondono a True e False:
Se vogliamo inizializzare un valore booleano dobbiamo fare attenzione a non usare gli apici come per le stringhe, quindi:
Ed eccoci finalmente arrivati alla degna conclusione di questa lunga passeggiata tra i tipi di dati in Python: il nulla.
Il tipo di dati None (nulla) può assumere un solo valore, uguale proprio a None. Viene usato in tutte quelle situazioni in cui intendiamo indicare la mancanza di un valore definito.
Per esempio possiamo usarlo per inizializzare alcune variabili che devono esistere, ma che non hanno un valore iniziale.
Quando parleremo dei parametri opzionali delle funzioni, vedremo come il tipo di dati None possa essere usato per inizializzare in maniera pulita.
Per definire None, come per True e False, non dobbiamo mai usare gli apici:
Conversioni tra tipi di dati in Python
Sicuramente ci capiterà di dover trasformare un valore da un tipo di dati a un altro.
Per esempio potremmo dover trasformare una lista in una tupla o un intero in una stringa e così via.
Per fare questo dobbiamo usare i costruttori predefiniti: str, list, tuple e int.
Vediamo qualche esempio per chiarire il loro utilizzo:
Bene, ora che abbiamo familiarizzato con i tipi di dati in Python, possiamo passare ad argomenti ancora più interessanti: la sintassi, le eccezioni, le funzioni, le classi, gli input e output.
Continua a seguire la sezione dedicata alla programmazione con Python e iscriviti alla nostra newsletter!
6 risposte