Rozdział 9 · Słuchaj mojego rozkazu!

is wady ==

Dwóch podobnych operatorów pyta o zupełnie różne rzeczy – i jest dokładnie jeden właściwy powód, by is użyć właśnie teraz.

Dwa różne pytania

== oraz is wyglądają podobnie, ale pytają o zupełnie różne rzeczy:

==
„Czy wartości są równe?”
is
„Czy to ten sam obiekt?”

Głównym praktycznym zastosowaniem jest None

W zdecydowanej większości przypadków liczby, łańcuch znaków i zwykłe porównania ogólnie wymagają Dokładnie tak ==. Właściwe i naprawdę ważne zastosowanie is na tym etapie to sprawdzić None:

is_none.py
value = None

print(value is None)       # True — właściwy sposób
print(value is not None)   # False
Dlaczego nie value == None
Technicznie value == None też działa w większości przypadków – ale is None jest uważany za bardziej poprawny styl, Python: jednoznacznie pyta "czy to dokładnie None?", zamiast "czy znaczenie jest równe czemuś, co zachowuje się jak None?". Zgódźmy się, że zawsze będziemy używać is None / is not None.
Nie używaj is do liczb i łańcuch znaków
256 is 256 lub "a" is "a" mogą zachowywać się nieoczekiwanie — ich wynik zależy od wewnętrznych szczegółów implementacji Python, które nie są gwarantowane i mogą się różnić w zależności od sytuacji. To nie jest coś, czego trzeba się nauczyć teraz: aby porównywać wartości, zawsze używaj ==. Pomysł „porównanie po obiekcie” powróci szczegółowo w rozdziale o OOP.
Praktyka: is kontra==
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →