„truthy” i „falsy” w Pythonie
Ten artykuł wyjaśnia „truthy” i „falsy” w Pythonie.
YouTube Video
„truthy” i „falsy” w Pythonie
Definicja „truthy” i „falsy”
W Pythonie obiekty oceniane w wyrażeniach warunkowych są uznawane za 'True' lub 'False'. „Truthy” odnosi się do obiektów ocenianych jako 'True', a „falsy” do tych ocenianych jako 'False'. Te oceny są często używane w konstrukcjach warunkowych, takich jak wyrażenia if
lub pętle while
. Funkcja bool()
przyjmuje dowolny obiekt i zwraca jego wartość logiczną.
„Falsy” (Obiekty oceniane jako False)
W języku Python następujące obiekty są uznawane za fałszywe
(falsy):.
-
False
-
None
-
Zero wartości numeryczne
- Przykład:
0
,0.0
- Przykład:
-
Puste typy sekwencji (takie jak puste listy, krotki lub ciągi znaków)
- Przykład:
[]
,()
,""
- Przykład:
-
Pusty słownik
- Przykład:
{}
- Przykład:
-
Pusty zbiór
- Przykład:
set()
- Przykład:
Te obiekty są oceniane jako 'fałszywe' (falsy) podczas użycia w warunku instrukcji if
. Na przykład możesz napisać kod w ten sposób.
1if not []:
2 print("The list is falsy.")
- W tym kodzie lista
[]
jest pusta, dlatego jest oceniana jakofałszywa
(falsy), a instrukcjaprint
zostaje wykonana.
„Truthy” (Obiekty oceniane jako True)
Obiekty, które nie są uznawane za fałszywe
, są traktowane jako prawdziwe
(truthy).
-
Liczby różne od zera (liczby całkowite, liczby zmiennoprzecinkowe)
- Przykłady:
1
,3.14
,-100
- Przykłady:
-
Niepuste typy sekwencji (listy, krotki, łańcuchy znaków itp.)
- Przykłady:
[1, 2, 3]
,(1, 2)
,"Hello"
- Przykłady:
-
Niepuste słowniki
- Przykład:
{"key": "value"}
- Przykład:
-
Niepuste zbiory
- Przykład:
{1, 2, 3}
- Przykład:
Obiekty uznawane za prawdziwe
(truthy) zostaną ocenione jako 'True', gdy użyte w warunku instrukcji if
. Na przykład możesz napisać kod w ten sposób.
1if [1, 2, 3]:
2 print("The list is truthy.")
- W powyższym kodzie, ponieważ lista
[1, 2, 3]
nie jest pusta, zostaje oceniona jakoprawdziwa
(truthy) i instrukcjaprint
zostanie wykonana.
Ocenianie wartości logicznej za pomocą funkcji bool()
Możesz ocenić wartość logiczną obiektów używając funkcji 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")
- Ten kod pokazuje, jak oceniana jest wartość logiczna różnych wartości. Na przykład wartość numeryczna
0
oraz pusty ciąg znaków są traktowane jakoFalse
, podczas gdy spacja lub ciąg znaków"0"
są traktowane jakoTrue
.
Wykorzystywanie prawdziwych
(truthy) i fałszywych
(falsy)
Dzięki wykorzystaniu prawdziwych
(truthy) i fałszywych
(falsy) kod można pisać bardziej zwięźle i intuicyjnie. W szczególności instrukcje if
mogą być często oceniane bez jawnych porównań, co czyni je krótszymi. Na przykład poniższe dwa fragmenty kodu działają podobnie, ale pierwszy z nich jest bardziej zwięzły.
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.")
W powyższym przykładzie można zobaczyć, że my_list
jest oceniana jako prawdziwa
(truthy), o ile nie jest pustą listą, co eliminuje potrzebę jawnego porównania.
Projektowanie z wykorzystaniem prawdziwych
(truthy) i fałszywych
(falsy)
Skutecznie wykorzystując koncepty prawdziwych
(truthy) i fałszywych
(falsy), można poprawić czytelność i wydajność kodu. Są one szczególnie przydatne do ustawiania wartości domyślnych, sprawdzania poprawności zmiennych i walidacji danych wejściowych. Na przykład, jeśli oczekujesz przekazania None
lub pustej listy jako argumentów, możesz napisać kod w ten sposób.
1def process_data(data=None):
2 data = data or []
3 print(data)
4
5process_data() # An empty list is used by default.
- W tym kodzie, jeśli
data
jestNone
, pustą listę[]
ustawia się jako wartość domyślną. W ten sposób użycietruthy
ifalsy
umożliwia zwięzłe ustalanie wartości domyślnych.
Wskazówki, aby unikać niezamierzonego zachowania
Kod wykorzystujący wartości truthy
i falsy
może być zwięzły i wygodny, ale pamiętaj, że może prowadzić do niezamierzonego zachowania. Na przykład w tym kodzie nie tylko wtedy, gdy data
jest None
, ale także gdy przyjmuje dowolną wartość ocenianą jako False
, taką jak pusty łańcuch znaków lub 0
, zostanie zastąpiona domyślną pustą listą []
. Z tego powodu, gdy wymagana jest ściślejsza kontrola, na przykład inicjalizacja wyłącznie wtedy, gdy wartość jest None
, zaleca się użycie jawnego warunku takiego jak value is None:
. W zależności od sytuacji ważne jest, aby projektować kod z uwzględnieniem równowagi między zwięzłością a ścisłością.
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.
- W tym kodzie
data
jest inicjowana jako pusta lista tylko wtedy, gdy ma wartośćNone
, natomiast inne fałszywe wartości, takie jak0
, pozostają bez zmian.
Kontrolowanie wartości logicznej w obiektach użytkownika
Nawet we własnych klasach możesz kontrolować wartość logiczną obiektu, definiując metodę __bool__()
lub __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
- W tym kodzie metoda
__len__()
sprawia, że pojemnik jest oceniany jakoFalse
, gdy jest pusty oraz jakoTrue
, gdy zawiera elementy.
Wnioski
Koncepcje truthy
i falsy
w Pythonie są bardzo ważne, ponieważ pozwalają pisać zwięzłe wyrażenia warunkowe i sprawiają, że kod jest bardziej intuicyjny. Zrozumienie i poprawne wykorzystanie tych koncepcji może znacznie poprawić czytelność i efektywność kodu.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.