CodeGym /Corso Java /Python SELF IT /Conversione dei tipi di dati

Conversione dei tipi di dati

Python SELF IT
Livello 5 , Lezione 2
Disponibile

2.1 Definizione del tipo

A volte non sappiamo quali dati sono memorizzati in una variabile in un certo punto del codice. Per questo in Python c'è la funzione type(), che si usa per determinare il tipo di un oggetto.

È una funzione integrata che restituisce il tipo dell'oggetto specificato, il che può essere utile per il debug, la validazione dei dati o durante l'implementazione di logiche che dipendono dai tipi di dati.

Come funziona la funzione type()

Quando chiami type(x), Python restituisce un oggetto speciale type che rappresenta il tipo della variabile x. Ad esempio:


x = 1
print(type(x))  # Mostrerà: <class 'int'>

x = "ciao"
print(type(x))  # Mostrerà: <class 'str'>

x = [1, 2, 3]
print(type(x))  # Mostrerà: <class 'list'>

Nota che sullo schermo verrà mostrata la parola class. Questo perché anche i tipi int, str, list e altri sono anch'essi classi, solo che sono integrati — non è necessario dichiararli, vengono forniti di default insieme a Python.

Applicazione pratica

La funzione type() è spesso usata in scenari dove è necessario differenziare le azioni in base al tipo di dati.

  • Diverse azioni possono essere eseguite a seconda del tipo della variabile.
  • Nelle funzioni e nei metodi, per assicurarsi della correttezza dei tipi degli argomenti.

Se vuoi assicurarti che in una variabile ci sia un numero, scrivi un codice del genere:


arg = 123
if type(arg) == int:
    print(arg + 10)  # Mostrerà: 133               

Un esempio più pratico, dove controlliamo il tipo di oggetto che è memorizzato in una variabile:


arg = "123"
if type(arg) == int:
    print(arg + 10)  # Questo non verrà eseguito, poiché arg è una stringa
elif type(arg) == str:
    print(arg + " world")  # Mostrerà: 123 world
else:
    print("Tipo sconosciuto")               

2.2 Assegnazione esplicita del tipo

In Python l'assegnazione esplicita del tipo di un oggetto avviene utilizzando funzioni di conversione dei tipi, come int(), float(), str(), tuple() e altri. Queste funzioni permettono di impostare un tipo specifico e convertire i dati da un tipo a un altro, il che è utile per trattare input dell'utente, eseguire operazioni matematiche o lavorare con stringhe e collezioni di dati.

Esempi di funzioni di conversione dei tipi

int(): Converte i dati in un numero intero. Abbiamo già incontrato questa funzione diverse volte e sappiamo che se passiamo una stringa con un numero, int() la converte nel numero intero corrispondente.


num = int("123")  # num sarà il numero intero 123               

float(): Un'altra funzione già nota. Converte i dati in un numero a virgola mobile.


num = float("123.45")  # num sarà 123.45               

str(): Converte qualsiasi oggetto Python in una rappresentazione di stringa.


s = str(10.5)  # s sarà '10.5'               

tuple(): Converte una sequenza in una tupla.


t = tuple([1, 2, 3])  # t diventerà (1, 2, 3)               

list(): Converte un oggetto iterabile (come una stringa o una tupla) in una lista. Un oggetto iterabile è un oggetto che può essere iterato sequenzialmente, come stringhe, liste o tuple.


l = list("abc")  # l sarà ['a', 'b', 'c']               

dict(): Crea un dizionario da una sequenza di coppie chiave-valore.


d = dict([(1, 'a'), (2, 'b')])  # d sarà {1: 'a', 2: 'b'}

Di dizionari e tuple parleremo un po' più avanti, ma penso che tu abbia colto il concetto generale: se hai bisogno di impostare esplicitamente un tipo, puoi sempre utilizzare le funzioni sopra elencate.

2.3 Conversione dei tipi

In Python la conversione esplicita (o casting) dei tipi permette ai programmatori di controllare e modificare i tipi di dati delle variabili. Questo può essere utile per garantire la compatibilità dei dati in diverse operazioni o per correggere i tipi di dati ottenuti dall'input dell'utente o durante la lettura da file. In sostanza, conversione dei tipi e casting dei tipi significano la stessa cosa: il processo di cambiare il tipo di dati di un oggetto in un altro tipo.

Siamo già un po' familiari con il casting esplicito. In Python si effettua tramite funzioni integrate, come int(), float(), str(), tuple(), list(), dict(), set() e altre.

Per rafforzare il concetto, forniamo qualche altro esempio:

Funzione Descrizione Esempio input Esempio output
int() Conversione in numero intero int("10") 10
float() Conversione in numero a virgola mobile float("20.5") 20.5
str() Conversione in stringa str(15) "15"
tuple() Conversione in tupla tuple([1, 2, 3]) (1, 2, 3)
list() Conversione in lista list("abc") ['a', 'b', 'c']
dict() Creazione di un dizionario da coppie chiave-valore dict([(1, 'one'), (2, 'two')]) {1: 'one', 2: 'two'}
set() Creazione di un insieme da una lista set([1, 1, 2, 2, 3, 3]) {1, 2, 3}

Esempi di utilizzo

Il casting esplicito dei tipi viene utilizzato in molti scenari, tra cui:

  • Gestione dell'input dell'utente: Garantendo che i dati inseriti siano conformi al tipo di dati previsto.
  • Interoperabilità dei dati: Quando i dati da fonti diverse o API devono essere combinati o confrontati.
  • Gestione degli errori: Prevenzione degli errori di esecuzione tramite la conversione dei dati nel tipo appropriato prima di eseguire operazioni.

Migliori pratiche e avvertimenti

La conversione esplicita dei tipi dovrebbe essere usata consapevolmente per evitare la perdita di dati (ad esempio, nel convertire un float in un int) o errori di conversione (ad esempio, cercare di convertire una stringa non numerica in un numero).

È anche importante ricordare che alcune conversioni possono essere non evidenti e portare a risultati inaspettati, richiedendo un'accurata verifica dei dati. Ad esempio, la conversione di int in bool e viceversa può avere effetti inaspettati :)

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION