Tipi in Python
Questo articolo spiega i tipi in Python.
YouTube Video
Tipi in Python
Il modulo typing
in Python viene utilizzato per introdurre suggerimenti di tipo in Python. È stato originariamente introdotto in Python 3.5 ed è utilizzato per migliorare la leggibilità e la manutenibilità del codice. I suggerimenti di tipo non influenzano il runtime del codice, ma consentono il controllo dei tipi con IDE e strumenti di analisi statica.
Nozioni di base sui suggerimenti di tipo
I suggerimenti di tipo chiariscono l'intento del codice specificando esplicitamente i tipi di funzioni e variabili. Nell'esempio seguente, i tipi sono specificati per gli argomenti e il valore restituito.
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
Nel codice sopra, a
e b
sono di tipo intero (int
), e il valore restituito della funzione è dichiarato esplicitamente come un intero. Anche con i suggerimenti di tipo, i tipi non sono rigorosamente imposti, ma potrebbero essere visualizzati avvisi durante lo sviluppo in caso di incongruenze di tipo.
Suggerimenti di tipo principali
Il modulo typing
in Python fornisce varie classi e funzioni per definire suggerimenti di tipo. Di seguito è riportato un elenco di suggerimenti di tipo comuni.
int
: interostr
: stringafloat
: numero a virgola mobilebool
: booleanoList
: listaDict
: dizionarioTuple
: tuplaSet
: insieme
Tipo List
Il tipo lista è specificato utilizzando la classe List
. Puoi anche specificare esplicitamente il tipo degli elementi all'interno di una lista.
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
In questo esempio, tutti gli elementi della lista devono essere di tipo int
.
Tipo Dict
Un tipo dizionario è definito utilizzando Dict
. È possibile specificare i tipi di chiavi e valori.
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
In questo esempio, il dizionario utilizza str
come tipo di chiave e int
come tipo di valore.
Tipo Tuple
Le tuple sono specificate utilizzando il tipo Tuple
. Puoi specificare il tipo di ciascun elemento in una tupla individualmente.
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
Qui, la funzione get_person
restituisce una tupla contenente una stringa e un intero.
Tipo Union
Il tipo Union
è utilizzato per indicare esplicitamente che sono accettabili più tipi.
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
In questo esempio, la funzione process_value
accetta come argomento un valore int
o float
e restituisce un risultato di tipo float
.
Tipo Optional
Il tipo Optional
è utilizzato quando una variabile potrebbe essere None
. È fornito come abbreviazione per Union[Type, None]
.
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
Qui, mostra che quando name
non è specificato, è trattato come None
.
Tipi Generici
I tipi generici sono un modo per rappresentare astrattamente quali tipi di elementi contiene una struttura dati. Nel modulo typing
, puoi definire tipi generici utilizzando TypeVar
.
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
In questo esempio, get_first_element
è una funzione che restituisce il primo elemento di una lista e funziona indipendentemente dal tipo della lista.
Alias di Tipo
Un alias di tipo è un modo per semplificare definizioni di tipo complesse assegnando loro un nome chiaro.
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
In questo esempio, un alias di tipo Coordinates
è definito per rappresentare un tipo con tuple all'interno di una lista.
Riepilogo
Il modulo typing
in Python è molto utile per migliorare la leggibilità e la manutenibilità del codice. Utilizzando correttamente gli hint di tipo, puoi aiutare a prevenire incompatibilità di tipo ed errori, specialmente in progetti su larga scala o nello sviluppo in team. I tipi sono semplicemente uno strumento di supporto allo sviluppo e non influenzano il comportamento durante l'esecuzione, mantenendo così la flessibilità del codice.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.