2024-11-06

Myśląc o Pythonie: Identyczność oraz równość

Dziś będziemy zajmować się tytułowymi pojęciami, czyli porozmawiamy o tym co oznacza identyczność oraz równość. Pojęcia te, po tak długim czasie pracy z językiem Python, powinny wydać Ci się dość intuicyjne. Niemniej dziś trochę o nich porozmawiamy.

Identyczność

Identyczność to po prostu sytuacja, gdy mamy przykładowo referencję, do jednego i tego samego obiektu. Gdy pod płaszczykiem dwóch innych obiektów kryje się jeden i ten sam. Gdy nie możemy odróżnić od siebie 'tych dwóch obiektów'. Jest to pojęcie czasami mylone z pojęciem równości. Które oczywiście jest zjawiskiem podobnym, ale jednak różniącym się od identyczności. O równości porozmawiamy sobie za chwilę.

Wracając do identyczności, weźmy sobie przykładowo dwie zmienne, obie o wartości jeden. Jak już pewnie wiesz, w takim wypadku, Python stworzy tylko jedną jedynkę. Inaczej mówiąc, w pamięci będzie istniał jeden obiekt, o wartości jeden. Na obiekt ten będą wskazywać obie zmienne (będą do niego referencjami). Zmienne, o których mowa, nazwijmy przykładowo zmienną x i y. Identyczność takich zmiennych będziemy mogli sprawdzić pytając po prostu 'czy zmienna x jest zmienną y' co w Pythonie wyrażamy jak poniżej.

proste sprawdzenie pozwalające udowodnić identyczność w języku Python

Powyżej stworzyliśmy dwie zmienne, a ich wartości określiśmy jako jeden, poprzez przypisanie. Następnie za pomocą instrukcji print wyświetliśmy efekt działanie słówka kluczowego is na tych zmiennych. W wyniku takich działań otrzymaliśmy w konsoli, napis True. Jest to logiczna prawda. Zatem mamy potwierdzenie - prawdą jest, że x to y. Potwierdza się równoścześnie, że wskazują na jeden i ten sam obiekt. Możemy dodatkowo sprawdzić id obu zmiennych.

potwierdzenie działania zjawiska o nazwie identyczność w przypadku prostych zmiennych.

Jak możemy zauważyć, ciągi reprezentujące id obiektu są takie same, co dobitnie potwierdza, że mamy do czynienia z jednym i tym samym obiektem. Można z tego wywnioskować, że mamy do czynienia z dwiema referencjami do jednego obiektu.

listy

Sprawdźmy sobie identyczność na innym przykładzie. Tym razem weźmiemy pod lupę listy. Stworzymy sobie znowu zmienne x i y, ale tym razem przypiszemy do nich listy. Listy będą takie same i sprawdzimy jak zachowa się interpreter. Wykorszystajmy kod z poprzedniego przykładu, zmienimy tylko typ int na list.

sprawdzanie jak działa identyczność w przypadku list w Pythonie

Jak możemy się przekonać powyżej, mimo takich samych wartości obu zmiennych, według interpretera nie są one identyczne. Ciekawa sytuacja. Okazuje się, że w takim przypadku Python nie tworzy jednego obiektu, a dwa. Zatem w przypadku listy, bardziej skomplikowanego bytu od liczby - mamy za każdym razem tworzony nowy obiekt? W powyższym przykładzie na to wychodzi. Obie zmienne mają całkowicie inne id, więc są innymi obiektami.

Wskazywanie na siebie nawzajem i kopiowanie

Możemy także przypisać do zmiennej y zmienną x, co zaowocuje zachowaniem pewnie spodziewanym przez Ciebie - będziemy tu mieli identyczność.

sprawdzanie jak działa identyczność w przypadku sprzypisania następnej zmiennej wartości poprzedniej w Pythonie

Jak widzisz, mamy tutaj po prostu dwie zmienne wskazujące na ten sam obiekt. Zmiennej y przypisaliśmy w końcu zmienną x, czyli zmienna y wskazuje na to samo, na co zmienna x.

Możemy sprawdzić jeszcze inny przykład. Mianowicie listę w zmiennej y możemy też stworzyć przez kopiowanie pierwszej z list. Zatem możemy przypisać do zmiennej x jakąś listę, a następnie na podstwie tej listy stworzyć jej kopię i przypisać do zmiennej y. Zobaczmy jak to wygląda w kodzie.

tworzenie listy przez kopoiwanie i sprawdzanie jak w tym przypadku zachowa się identyczność w języku Python

Jak możemy się przekonać, patrząc na obrazek powyżej, kopiowanie listy z x'a jest realizowane funkcją list(). Jest to instrukcja, która może tutaj skopiować listą, ale jest też pomocna przy zamienianiu jakiegoś innego typu w listę. Po prostu po jej zastosowaniu na czymś, dostajemy listę W tym wypadku widzimy, że także mamy do czynienia z dwoma odrębnymi obiektami - listą pierwszą i jej kopią.

Równość

Kolejne z pojęć, którym się zajmiemy. Jest czasem mylone na początku z identycznością, tak samo jak identyczność z równością. Tutaj sprawa też nie jest jakoś zanadto skomplikowana, powiedziałbym, że nawet prostrza. Ot, pojęcie to oznacza po prostu równość wartości i możemy to sprawdzić używając po prostu operatora równości. Popatrzmy na kod z poprzednich przykładów.

równość w przypadku zmiennych typu int w języku Python

Jak widzimy powyżej, wróciliśmy do Naszych zmiennych typu int. Obie mają przypisaną wartość jeden, czyli obie wskazują na obiekt z jedynką. Wyświetlamy sobie efekt porównania tych zmiennych, którym oczywiście będzie prawda. Oznacza to, że wartości tych zmiennych są sobie równe. I dodatkowo też możemy zobaczyć, że jest to jeden i ten sam obiekt - żadna niespodzianka. Już wiemy, że w tym wypdaku mamy obecną identyczność, a teraz dodatkowo wiemy, że jest to też równe sobie. Ameryki nie odkryliśmy, ale właśnie tak wygląda sytuacja, jeśli mówimy o równości.

Jak wygląda to w przypadku listy? Spróboj podmienić wartości przypisywane do zmiennych i sprawdź sam. Jak zawsze pobaw się kodem, miłej zabawy!

Dodaj komentarz

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram