Rozdział 9 · Słuchaj mojego rozkazu!

Truthiness i None

Stan nie zawsze wymaga wyraźnego porównania — Python potrafi zapytać o każde znaczenie, czy jest prawdziwe, czy fałszywe.

Stan nie zawsze wymaga wyraźnego porównania

już widzieliśmy w rozdziale 8: Pusty łańcuch znaków zachowuje się jak False, a niepusty — jak True. To działa nie tylko dla łańcuch znaków — Python potrafi zapytać o DOWOLNĄ wartość: „Czy zachowujesz się jak prawda, czy jak fałsz?” To nazywa się truthiness („prawda”

Falsy są wartości, które zachowują się jak False

Znaczeniebool(...)Dlaczego
FalseFalsejuż fałsz
NoneFalse„to nie ma znaczenia”
0, 0.0Falsezero jest uznawane za fałsz
""Falsepusty łańcuch znaków
[], {}Falsepustych kolekcjach szczegółowo przyjrzymy się później

Truthy to prawie wszystko inne

Znaczeniebool(...)Dlaczego
TrueTruejuż prawda
-10, 1, 42Truedowolną niezerową liczbą
"нет", "0", "False"Truekażdy niepusty łańcuch znaków — nawet taki!
truthiness.py
print(bool(0))        # False
print(bool(1))        # True
print(bool(-10))      #True – ujemne też nie jest zerem!
print(bool(""))       # False
print(bool("False"))  #True jest niepustym łańcuch znaków łańcuch znaków, a nie wartością False
print(bool("0"))      # True również nie jest pustym łańcuch znaków
Tekst „False”
bool("False") równa się Truebo łańcuch znaków "False" składa się z pięciu znaków — nie jest pusty, co oznacza, że truthy. To samo z "0": To jest tekst z pojedynczym znakiem, a nie z cyfrą zero.

None – „Tu nie ma sensu”

None jest szczególnym znaczeniem oznaczającym coś w stylu „nie ma wartości”

none.py
value = None

print(value is None)       # True
print(bool(value))          #False – None jest też falsy
print(value == 0)           #False – None to nie jest 0
print(value == "")          #False – None to nie jest pusta łańcuch znaków

Zwróć uwagę na operator is zamiast == — do różnicy między nimi wrócimy w sekcji 9.17.

Praktyka: truthiness i None
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →