Operatory porównania

Wiele osób zaczynających swoją przygodę z Pythonem jest zafascynowana elastycznością tego języka oraz składnią, która jest dość intuicyjna. Następnie zderzają się z problemem, że za bardzo chcieliby upraszczać, a co za tym idzie nie do końca poprawnie stosują różne operatory. Chyba najczęściej mylnie używane są operatory porównania == oraz is.

Operatory porównania "==" oraz "is"

Oba operatory służą do porównywania, ale porównują nieco inne rzeczy. Spójrzmy na poniższy przykład:

dni = ['poniedziałek', 'wtorek', 'sroda']
nowe_dni = dni
print(dni == nowe_dni)
print(dni is nowe_dni)

Wynik wykonania tego programu będzie następujący:

True
True

Wykonajmy teraz inną operację:

dni = ['poniedziałek', 'wtorek', 'sroda']
nowe_dni = list(dni)
print(dni == nowe_dni)
print(dni is nowe_dni)

I ponownie sprawdźmy wynik:

True
False

Skąd ta różnica? Oba operatory służą do porównywania, ale działają nieco odmiennie. Operator == sprawdza, czy dwa obiekty są identyczne, czyli czy ich „zawartość” jest taka sama. Operator is służy do sprawdzenia, czy dwa obiekty wskazują na ten sam adres pamięci. W drugim przypadku z punktu widzenia alokacji pamięci utworzyliśmy nową listę, która zapisana została w nowym obszarze pamięci komputera. Dlatego wynik drugiego działania zwrócił wartość False. Tak samo by się stało, gdybyśmy w jakikolwiek sposób zmodyfikowali zawartość zmiennej nowe_dni.

Jeżeli chcemy sprawdzić w Pythonie identyfikator danego obiektu musimy użyć metody id().

E-BOOK

Zaczynasz swój pierwszy projekt związany z automatyzacją?

Ten e-book jest dla Ciebie! Zawiera sprawdzone podejście, które realizowałem w wielu projektach. Sprawdź co możesz zrobić, by odnieść sukces!


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)