`Truthy` e `Falsy` in Python
Questo articolo spiega i concetti di Truthy
e Falsy
in Python.
YouTube Video
Truthy
e Falsy
in Python
Definizione di Truthy
e Falsy
In Python, gli oggetti valutati nelle espressioni condizionali vengono considerati come 'True' o 'False'. Truthy
si riferisce agli oggetti valutati come 'True', mentre Falsy
si riferisce a quelli valutati come 'False'. Queste valutazioni vengono spesso utilizzate nei rami condizionali, come le istruzioni if
o i cicli while
. Inoltre, la funzione bool()
accetta qualsiasi oggetto e restituisce il suo valore booleano.
Falsy
(Oggetti valutati come False)
In Python, i seguenti oggetti sono considerati falsy
:.
-
Falso
-
Nessuno
-
Valori numerici pari a zero
- Esempio:
0
,0.0
- Esempio:
-
Tipi di sequenze vuote (come liste, tuple o stringhe vuote)
- Esempio:
[]
,()
,""
- Esempio:
-
Dizionario vuoto
- Esempio:
{}
- Esempio:
-
Insieme vuoto
- Esempio:
set()
- Esempio:
Questi oggetti sono valutati come 'falsy' quando utilizzati nella condizione di un'istruzione if
. Ad esempio, puoi scrivere codice in questo modo.
1if not []:
2 print("The list is falsy.")
- In questo codice, la lista
[]
è vuota, quindi viene valutata comefalsy
, e l'istruzioneprint
viene eseguita.
Truthy
(Oggetti valutati come True)
Gli oggetti che non sono considerati falsy
sono considerati truthy
.
-
Numeri diversi da zero (numeri interi, numeri a virgola mobile)
- Esempi:
1
,3.14
,-100
- Esempi:
-
Sequenze non vuote (liste, tuple, stringhe, ecc.)
- Esempi:
[1, 2, 3]
,(1, 2)
,"Ciao"
- Esempi:
-
Dizionari non vuoti
- Esempio:
{"chiave": "valore"}
- Esempio:
-
Insiemi non vuoti
- Esempio:
{1, 2, 3}
- Esempio:
Gli oggetti considerati truthy
verranno valutati come 'True' quando usati nella condizione di un'istruzione if
. Ad esempio, puoi scrivere codice in questo modo.
1if [1, 2, 3]:
2 print("The list is truthy.")
- Nel codice sopra, poiché la lista
[1, 2, 3]
non è vuota, viene valutata cometruthy
e l'istruzioneprint
viene eseguita.
Valutare il valore booleano con la funzione bool()
Puoi valutare il valore booleano degli oggetti utilizzando la funzione bool()
.
1# Examples of falsy values
2print("False is", "truthy" if bool(False) else "falsy")
3print("0 is", "truthy" if bool(0) else "falsy")
4print('"" is', "truthy" if bool("") else "falsy")
5print("None is", "truthy" if bool(None) else "falsy")
6print("[] is", "truthy" if bool([]) else "falsy")
7
8# Examples of truthy values
9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
- Questo codice dimostra come viene valutato il valore di verità di diversi valori. Ad esempio, il valore numerico
0
e una stringa vuota sono consideratiFalse
, mentre uno spazio o la stringa"0"
sono consideratiTrue
.
Utilizzo di truthy
e falsy
Utilizzando truthy
e falsy
, il codice può essere scritto in modo più conciso e intuitivo. In particolare, le istruzioni if
possono spesso essere valutate senza confronti espliciti per renderle più concise. Ad esempio, i due frammenti di codice seguenti si comportano in modo simile, ma il primo è più conciso.
1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5 print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9 print("The list is not empty.")
Nell'esempio sopra, puoi vedere che my_list
è valutato come truthy
finché non è una lista vuota, eliminando così la necessità di un confronto esplicito.
Progettare con truthy
e falsy
Utilizzando efficacemente i concetti di truthy
e falsy
, puoi migliorare la leggibilità e l'efficienza del codice. Sono particolarmente utili per impostare valori predefiniti, controllare la validità delle variabili e convalidare gli input. Ad esempio, se ti aspetti che come argomenti vengano passati None
o una lista vuota, puoi scrivere codice in questo modo.
1def process_data(data=None):
2 data = data or []
3 print(data)
4
5process_data() # An empty list is used by default.
- In questo codice, se
data
èNone
, una lista vuota[]
viene impostata come valore predefinito. In questo modo, l'utilizzo ditruthy
efalsy
ti consente di impostare valori predefiniti in modo conciso.
Punti da notare per evitare comportamenti indesiderati
Tuttavia, sebbene il codice che utilizza valori truthy
e falsy
possa essere conciso e comodo, bisogna essere consapevoli che potrebbe causare comportamenti indesiderati. Ad esempio, in questo codice, non solo quando data
è None
, ma anche quando assume qualsiasi valore valutato come False
, come una stringa vuota o 0
, verrà sostituito con la lista vuota predefinita []
. Per questo motivo, quando è richiesta una condizione più rigorosa, come inizializzare solo quando il valore è None
, si consiglia di usare una condizione esplicita come value is None:
. A seconda della situazione, è importante progettare tenendo presente un equilibrio tra concisione e rigore.
1def process_data(data=None):
2 if data is None:
3 data = []
4 print(data)
5
6process_data() # An empty list is used by default.
7process_data(0) # 0 is printed because it's not None.
- In questo codice,
data
viene inizializzato a una lista vuota solo se èNone
, mentre altri valori falsi come0
vengono lasciati invariati.
Controllare il valore booleano negli oggetti personalizzati
Anche nelle tue classi puoi controllare il valore booleano di un'istanza definendo __bool__()
o __len__()
.
1class MyContainer:
2 def __init__(self, items):
3 self.items = items
4
5 def __len__(self):
6 return len(self.items)
7
8box = MyContainer([])
9print(bool(box)) # False
10
11box.items.append("item")
12print(bool(box)) # True
- In questo codice, il metodo
__len__()
fa sì che il contenitore venga valutato comeFalse
quando è vuoto e comeTrue
quando contiene elementi.
Conclusione
I concetti di truthy
e falsy
in Python sono molto importanti per scrivere espressioni condizionali concise e rendere il codice più intuitivo. Comprendere e utilizzare correttamente questi concetti può migliorare notevolmente la leggibilità e l'efficienza del codice.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.