2022-05-01

Myśląc o Pythonie: Liczby int i float

Wspominaliśmy trochę o zmiennych, czyli pudełkach w pamięci, które mogą przechowywać różne rzeczy - choć w Pythonie zmienna to raczej coś co zawiera informacje gdzie jest pudełko np. z jedynką.

No właśnie, w programach przechowujemy dane różnego typu, bo różne rzeczy mogą się nam przydać. Przykładowo mamy tekst (nasze stringi), ale mamy także liczby. No i liczby, w komputerze dzielimy na takie bez przecinka (w programowania używamy kropki) lub posiadające część "po przecinku".

Dane

Zmienne wskazują więc na pudełka w pamięci (zawierają informacje gdzie jest dane pudełko). Pudełka z kolei mogą zawierać różne rzeczy - i to właśnie są dane. W Pythonie mamy kilka podstawowych typów danych, między innymi mamy Numbers, String czy List. Oczywiście w Pythonie wszystko jest obiektem, więc nasze zmienne i pudełka to także obiekty.

Typy danych

Wiemy już, że różne dane, mogą mieć różne typy (nasze Numbers, String itp.). W wielu językach programowanie musimy te typy podawać deklarując zmienną, pisząc przykładowo: int zmienna1 - co znaczy po prostu, że tworzymy zmienną typu int (skrót od integer - liczba całkowita, integralna). Jest to tzw. static cast czyli typowanie statyczne. Jednak Python używa dynamic cast, czyli typowania dynamicznego. O co chodzi? Ano o to, że nie musimy w Pythonie podawać jakiego typu coś jest. Interpreter za nas wywnioskuje jakiego typu ma byś dany obiekt. Jak to zrobi? Z kontekstu.

Jeśli piszesz mi zmienna1 = 1, to ja domyślam się, że zmienna1 ma być typu liczbowego (bo wpisałeś liczbę), ponadto jest wysoce prawdopodobne, że ma być to typ liczbowy całkowity - czyli int. Przecież wpisałeś liczbę bez przecinka, po znaku równości.

Jednyn słowem, w Pythonie wystarczy wymyślić jakąś nazwę dla zmiennej, po czym przypisać wartość.

Plusy typowania dynamicznego są liczne: mamy większą elastyczność (ta sama zmienna może później przyjąć wartość innego typu), fakt, ze nie musimy myśleć ciągle o typie danych i go określać. Minusem zaś jest to, że istnieje jakby niebezpieczeństwo przypisania danych niewłaściwego typu - mamy zmienną, która powinna przechowywać int, ale na skutek późniejszych operacji okazuje się, że zmienna przechowuje liczby float (zmiennoprzecinkowe), wtedy mogą się pojawić błędy.

Liczby czyli Numbers

Liczby czyli Numbers, mają takich kilka podstawowych typów.

integerfloat
liczba całkowitaliczba zmiennoprzecinkowa
346.45
tabela z podstawowymi typami liczbowymi w języku Python

Są jeszcze liczby zespolone, ale na razie pomówmy o tych dwu typach - są one najpopularniejszymi i najczęściej spotykanymi w programowaniu.

Numbers w praktyce

Zacznijmy od intów, czyli liczb typu integer, w skrócie int. Są to liczby całkowite - typ podstawowy danych liczbowych.

zmienna a, wskazująca na liczbę typu int w języku Python

Zmienna a, wskazuje na pudełko w pamięci przechowujące liczbę całkowitą typu integer. Możemy sprawdzić tzw. adres "tego pudełka" w pamięci używając na zmiennej a, funkcji id. Oczywiście to co zwróci funkcja id musimy wydrukować za pomocą funkcji print, bowiem sama funkcja id nie drukuje na ekran efektu swojego działania.

sprawdzanie adresu na jaki wskazuje zmienna w Pytonie, za pomocą funkcji id()

Na ekranie otrzymamy następujący rezultat (w terminalu):

Mamy także zmienne typu float, czyli wspomniane liczby zmiennoprzecinkowe.

liczby int i float w języku programowania Python

Po uruchomieniu skryptu, widzimy różnicę jak na dłoni:

efekt działania skryptu wyświetlającego typ int i float w języku programowania Pythohn

W programowaniu nie możemy "na oko" określać typów, musimy mieć 100% pewności, co ma jaki typ. Możemy do sprawdzenia tego, wykorzystać funkcję sprawdzającą typy obiektów, czyli type(). Tutaj także potrzebujemy funkcji drukującej efekt działań, gdyś zadaniem funkcji type() jest jedynie sprawdzenie typu - nie wydrukowanie tego sprawdzenia.

sprawdzenie typu zmiennej różnego typu w języku programowania Python

Jeśli w kodzie naszego skryptu, usuniemy przykładowo z float część po przecinku, to oczywiście otrzymamy zwykłą liczbę typu całkowitego.

sprawdzenie typu zmiennej tego samego typu w języku programowania Python

Właśnie doświadczyliśmy dynamicznego typowania - dlatego mówimy, że typ zmiennej nie jest uzależniony od jakiejś jednoznacznej deklaracji, tylko od typu wartości, na jaką dana zmienna wskazuje. Innymi słowy, zależy jakiego typu wartość jest przechowywania w obiekcie, na jaki wskazuje zmienna.

Czy typ jest odpowiedni?

Na koniec, mamy w Pythonie jeszcze jedną ciekawą funkcję. Mianowicie taką, która pozwala nam sprawdzić czy coś jest takim typem, jakiego byśmy chcieli, a jest to funkcja isinstance(zmienna, typ spodziewany). Przyjmuje ona dwa wymienione parametry: zmienna - czyli po prostu zmienna jaką chcemy sprawdzić i typ spodziewany - czyli typ zmiennej, którego powinna być sprawdzana zmienna. Innymi słowy, pytamy "czy zmienna nazwa_zmiennej, jest typu typ_spodziewany? Przykładowo, ja zapytam "czy zmienna b jest typu float?" i "czy zmienna a jest typu int?". Jako odpowiedź dostanę prawda (True) lub fałsz (false), zobaczmy:

sprawdzanie czy zmienna jest spodziewanego typu, w języku Python.

I uzykujemy odpowiedzi: Czy a jest intem? Prawda i czy b jest floatem? Prawda

Efekt sprawdzenia czy zmienna jest określonego typu, w języku Python.

Na tym, na razie, zakończymy naszą przygodę z typami. Zapraszam za tydzień, do dalszej, wspólnej nauki języka programowania Python!

3 comments on “Myśląc o Pythonie: Liczby int i float”

Dodaj komentarz

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