Day Two: Typy a python
Postanowiłem zacząć od początku czyli od typów w pythonie. Python to język dynamicznie typowany oznacza to w praktyce tyle, że interpretator (program, który interpretuje skrypty) domyśla się jakiego typu są zdefiniowane przez ciebie zmienne. W językach statycznie typowanych jak Java wygląda to następująco:
int i = 3;
Gdzie int to właśnie typ, i to nazwa zmiennej (zmienna to coś w rodzaju etykiety tak by komputer rozumiał, że chcesz manipulować tą konkretną wartością a nie inną). W pythonie wygląda to tak:
i = 3
Python domyśla się, że chodzi ci o int ponieważ 3 jest liczbą całkowitą, dlatego nie trzeba tego opisywać.
Co to jest "typ"
No właśnie może od tego powinien zacząć - co to jest typ? Większość pewnie rozumie to intuicyjnie, typ to określona struktura danych, to różne kategorie do których przyporządkowane są informacje/dane spełniające określone warunki.
W Pythonie wyróżniamy poniższe typy:
int (integer)
Liczby całkowite jak -5, 20 czy 1000.
float
Liczby zmiennoprzecinkowe jak 1.5, 100.234.
str (string)
Znaki alfanumeryczne, w pythonie 3 to unicode. Unicode to temat na oddzielny wpis, ale ważne żebyś wiedział, że chodzi o alfabet (+ znaki licznowe) z znakami specjalnymi występującymi w innych językach niż angielski jak nasze polskie ś,ć, ź ale też 日. Definiuje się je używając cudzysłowów czyli "Łukasz" ale też 'Łukasz123'.
bool
Kto miał na studiach logikę ten odrazu złapie o co chodzi. Wartość logiczna prawda (True) i fałsz (False). Do tworzenia wartości logicznych używa się specjalnych operatorów porównawczych jak:
- == czyli jest równy. 2 == 2 to prawda ponieważ 2 jest równe 2. W szkole do "równa się" używa się znaku "=", a w programowaniu to najczęściej operator przypisania.
- > czyli jest większy. 4 > 3 to prawda ponieważ 4 jest większe od 3
- < czyli jest mniejszy. 3 < 4 to prawda ponieważ 3 jest mniejsze niż 4
- >= czyli większe bądź równe. 4 >=4 to prawda ponieważ 4 jest większe bądź równe 4.
- <= czyli mniejsze bądź równe. 4 <=4 to prawda ponieważ 4 jest mniejsze bądź równe 4.
- not czyli logiczna negacja. not Fałsz to prawda ponieważ logiczną negacją fałszu jest prawda.
Oprócz tego występuje:
list
Lista. Listę można rozumieć jako zbiór, kolekcję innych typów upchanych w jedną zmienną. Lista stringów to ["a", "b", "c"]
, w Pythonie elementy listy nie muszą być jednego typu czyli taka opcja jest dopuszczalna: [1, 1.23, True, "3"]
. Elementy w liście są numerowane od zera. Pierwszy element w naszej liście mieszanej ma indeks zero i wywołuje się go używając klamry kwadratowej.
l = [1, 1.23, True, "3"]
# zwróci 1
l[0]
# zwróci "3"
l[3]
# zwróci True
l[2]
Można też stosować negatywne indeksy, wtedy kolejność jest liczona od końca. Indeks -1, l[-1], zwróci "3" czyli ostatni element z listy, Indeks -2 zwróci True.
dict
Słownik. Słownik jest podobny do listy z tym, że ta struktura danych działa na zasadzie klucza zamiast indeksów. Klucz jest podobny do zmiennej, to również etykieta po której identyfikuje się określoną wartość tyle tylko, że wszystko dzieje się wewnątrz określonej przestrzeni - słownika.
slownik = {'dwa': 2, 'prawda': True}
Stworzyliśmy zmienną słownik do której przypisaliśmy słownik. Słownik definiuje się otwierając nawias klamrowy, w cudzysłowiu umieszcza się klucz a po dwukropku wartość. Kolejne klucze dodaje się po przecinku. Jeśli chce wywołać określoną wartość wpisuję:
# zwróci 2
slownik['dwa']
# zwróci True
slownik['prawda']
Muszę powiedzieć, że to pewnego rodzaju uproszczenie bo klucz nie musi być w cudzysłowiu. Kluczem mogą być różne typy danych nie tylko str (pamiętacie, że cudzysłów oznacza typ danych alfanumeryczny).
Podsumowanie
Omówiłem pokrótce podstawowe typy w pythonie (pewne umyślnie pominąłem), starałem się wytłumaczyć co to jest typ i jak wygląda przypisywanie zmiennej do wartości.
Jutro zakończę temat typów omawiając mutowalność.
Poprzednio:
Jeśli ci się podobało i chcesz więcej to upvote i dodanie mnie do obserwowanych zawsze będzie dodatkową zachętą do pracy 😉
Jeśli mogę trochę pomarudzić ;) Ciągle zastanawiam się czy jest sens wrzucać artykuły traktujące o podstawach języka. Bo moim zdaniem lepiej omawiać jakieś bardziej zaawansowane przypadki, ciekawostki, własne projekty. Innymi słowy coś co nie jest na wyciągnięcie ręki w tutorialu / dokumentacji. Po prostu przeszedłbym od razu do czegoś bardziej zaawansowanego. Ale to tylko moje subiektywne zdanie :)
Tak masz trochę racji - pisanie o podstawach jest raczej nudne, ale takie założenie przyjąłem w ramach wyzwania. Będę oczywiście opisywał jakieś bardziej skomplikowane projekty/rzeczy w przyszłości tak jak robiłem to wcześniej.