Tipi Python: facoltativo può significare obbligatorio |  di Marcin Kozak |  Novembre 2023

 | Intelligenza-Artificiale

PROGRAMMAZIONE PYTHON

Scopri come evitare frequenti abusi e incomprensioni durante la digitazione. Facoltativo.

fotografato da Sala Carolina SU Unsplash

Secondo la documentazione di Python, typing.Optional è un modo pratico per indicare che un oggetto può essere None. È un modo conciso ed elegante per esprimere questo concetto, ma è anche cristallino?

Vorrei riformulare questa domanda: quando vedi la parola “opzionale” in un contesto Python, cosa pensi che significhi? Immagina di vedere un argomento chiamato x quello ha il tipo di Optional(int). IL int part è piuttosto chiaro, poiché molto probabilmente indica un numero intero, ma cosa fa Optional Significare? Qual è il tuo primo pensiero?

Consideriamo le due opzioni seguenti:

  1. Non devo fornire un valore di x perché è facoltativo.
  2. x il valore può essere uno dei due int O None.

Se conosci abbastanza bene i suggerimenti sul tipo Python, sai che l’opzione 2 è corretta. Ma quando non lo fai… Forse mi sbaglio, ma non riesco a immaginare una persona che non conosca Python che scelga l’opzione 2. È l’opzione 1 che sembra avere più senso. Quando vedo l’informazione che qualcosa è facoltativo, penso che… beh, che sia facoltativo…

Questo problema porta ad un frequente uso improprio di typing.Optional tipo. Questo articolo ha lo scopo di far luce su questo uso improprio e guidarvi verso la corretta comprensione di questa tipologia.

Questi tre suggerimenti di tipo sono equivalenti:

from typing import Optional, Union

x: Union(str, None)
x: Optional(str)
x: str | None

Ognuno di loro trasmette la stessa informazione: quella x può essere una stringa o None. Sebbene perfettamente valido, il primo (Union(str, None)) rappresenta le prime fasi del suggerimento sul tipo in Python: era l’approccio iniziale, ma al giorno d’oggi non è necessariamente il metodo preferito. Poi, Optional è stato aggiunto al typing modulo, fornendo un modo più conciso e diretto per esprimere questo concetto. Secondo IL mypy documentazione:

Puoi usare il Optional modificatore di tipo per definire una variante di tipo che consente Nonead esempio Optional(int) (Optional(X) è la scorciatoia preferita per Union(X, None)).

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *