Dati in Python: bytes, numeri, booleani e conversioni

Dati in Python: bytes, numeri, booleani e conversioni

25 Ago 2018 6 Di Admin M.

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:

 

Dati in Python - Bytes eccezione

 

 

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:

 

Encoding - Python

 

 

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:

 

Lunghezza sequenza bytes - Python

 

 

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()

 

Metodi encode() e decode() - Python Bytes

 

 

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:

 

dati numerici - Python

 

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:

 

numeri in virgola mobile - Python

 

 

Possiamo inoltre definire numeri esadecimali con il prefisso “0x”:

 

Numeri esadecimali - Python

 

 

Oppure numeri ottali con “0o”:

 

Numeri ottali - Python

 

 

Ma anche numeri binari con “0b”:

 

numeri binari - Python

 

 

Per i più esigenti esistono anche i numeri complessi, la cui parte immaginaria è identificata dal suffisso “j” o “J”:

 

numeri complessi - Python

 

 

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:

 

Valori booleani - Python

 

 

Se vogliamo inizializzare un valore booleano dobbiamo fare attenzione a non usare gli apici come per le stringhe, quindi:

 

Inizializzazione booleano - Python

 

 

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:

 

None - Python

 

 

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:

 

Tipi di dati in Python

 

Conversioni - Python

 

 


 

Python learning

 

 

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!