Jason. Cała informatyka w jednym miejscu!

Kolejny temat dot. języka Python to moduły w Pythonie. Traktujcie to jako następny podstawowy budulec, bez którego nie powstałby żaden program wykraczający poza ambicje na poziomie "Hello, world!" (bez urazy :)). Dowiecie się czym jest moduł, z czego się składa, jak wygląda, do czego należy, a także jak rozróżniać w tym wszystkim pakiet oraz bibliotekę. Do dzieła!

MODUŁY W PYTHONIE. ROZRÓŻNIANIE TERMINOLOGII

Po definicji, przejdziemy sobie do pozostałych terminów mających bliski związek z tematem, gdyż te pojęcia mogą być przez Was błędnie rozumiane. Moduł to pojedynczy plik skryptowy z rozszerzeniem ".py". Nie umiem napisać tego jeszcze prościej ;). Skrypt tworzycie za każdym razem klikając "Zapisz jako" i zapisując go w dowolnym miejscu na dysku z rozszerzeniem ".py". Ot, cała filozofia!

PAKIET W PYTHONIE

Teraz drugi termin: pakiet. Gdy widzicie słowo "pakiet", to to jest nic innego jak opakowany zbiór modułów. Czyli do jednego pakietu ładujemy wiele modułów. Przy czym jest jeden warunek z ich korzystania: muszą w sobie mieć plik inicjalizacyjny (tzw. "__init__") również w postaci modułu (skryptu), aby w trakcie importu wiadomo było, od jakiego momentu i w jaki sposób ma przebiegać inicjalizacja oraz jak moduły w Pythonie mają się przystosować.

BIBLIOTEKA W PYTHONIE

Schodząc niżej, mamy na samym końcu bibliotekę. Biblioteka to zestaw / zbiór pakietów i tyle. W przeciwieństwie do pakietu, nie potrzebuje spełnienia żadnych dodatkowych warunków, by "zaistnieć". Możecie również spotkać się z określeniem "standardowa biblioteka". To oznacza podstawowy zestaw pakietów zawartych bezpośrednio w języku po jego zainstalowaniu. To jest katalog "Lib" umieszczony w katalogu języka Python.

Moduł, pakiet i biblioteka w Pythonie

Biblioteka składa się z zestawu pakietów, pakiet z zestawu modułów, a moduł z kodu źródłowego napisanego w Pythonie.

Podsumowując, na starcie mamy moduł jako plik skryptowy z kodem źródłowym. Z nich powstaje pakiet jako zestaw takich modułów, a biblioteka gromadzi w sobie wiele takich pakietów. Myślę, że nie będziecie mieć teraz większych problemów z przypominaniem sobie odpowiedniej terminologii w zależności od sytuacji.

ZASADY IMPORTOWANIA MODUŁÓW

Moduły w Pythonie wykorzystywane są przy pomocy instrukcji umieszczanej na samej górze przypominającej do złudzenia dyrektywę "include" z języka C. W Pythonie również jest wskazane importować wszystko co będzie potrzebne na samej górze kodu źródłowego przed jakimikolwiek innymi operacjami. Powodem korzystania z importu jest możliwość skorzystania z już wcześniej napisanych i sprawdzonych algorytmów oraz obiektów, żeby nie musieć pisać niezbędnych funkcjonalności od nowa (określa się to mianem "wynajdywania koła na nowo").

Poznajcie najpierw wymagane słowa kluczowe i prawidłowy zapis.

"IMPORT" I WSZYSTKO JASNE

Podstawowym słowem kluczowym importującym moduły jest "import". Zaraz po nim dopisujecie nazwę modułu posiadającego funkcje i zmienne, z których będziecie korzystać.

import random

Podałem przykład importu modułu "random" przeznaczonego do generowania pseudolosowych liczb. Wszystkie znajdujące się moduły w Pythonie również są pisane małymi literami! Obowiązuje taka sama konwencja nazewnicza jak przy zmiennych. Gdy zechcemy odwołać się do zaimportowanych danych, musimy za każdym razem dopisać przedrostek w postaci tej samej nazwy modułu. Dopiero po kropce możemy dostać się do atrybutu lub metody:

x = random.randint(5, 9)

Metoda "randint" jest jedną z należących do modułu "random" pozwalającą na wylosowanie liczby z podanego przedziału od A do B.

"FROM" DRUGĄ METODĄ IMPORTOWANIA

Gdy staje się dla nas uciążliwe odwoływanie się za każdym razem do danych po kropce, możemy zastosować drugi wariant importowania polegający na połączeniu słowa "import" ze słowem "from":

from random import randint

Powyższa instrukcja pozwala "wyjąć" dowolną daną z podanego modułu, a odwoływanie się do niej poprzez nazwę modułu już nie jest potrzebne. Moduły w Pythonie udostępniają taką możliwość :). Wtedy instrukcja:

x = randint(5, 9)

jest jak najbardziej dopuszczalna. Ale jak teraz napiszemy pełną nazwę:

x = random.randint(5, 9)

doświadczymy zgłoszenia wyjątku, bo nie został zaimportowany cały moduł "random", tylko jedna z jego metod! Pamiętajcie też, że to może doprowadzić do wystąpienia kolizji nazw w sytuacji, gdy importowane dwa moduły mają w sobie metodę o tej samej nazwie! Powyższy zapis spowoduje zakłopotanie dla interpretera i najzwyczajniej w świecie nie będzie wiedział jaką "wersję" metody wywołać.

PROCEDURA ODNAJDYWANIA PLIKÓW

Dwa słowa na koniec o "inteligencji" Pythona co do odnajdywania modułów, czyli gdzie Python szuka modułów. Moduły w Pythonie mają przeznaczone dwa miejsce do "przesiadywania":

  1. w katalogu "Lib" znajdującym się w folderze z zainstalowanym Pythonem (domyślna lokalizacja to: "C:\Users\[użytkownik]\AppData\Local\Programs\Python\[wersja Pythona]\Lib"),
  2. w katalogu gdzie zapisany jest nasz plik, z którego uruchamiamy program.

Sprawa jest prosta. Python szuka najpierw w pierwszym miejscu, a potem w drugim. Jeśli w obu nie znajdzie podanego modułu, zgłasza wyjątek "ModuleNotFoundError".


Artykułu nadszedł kres. Radzę potrenować zarówno przy jednej, jak i przy drugiej metodzie importowania. Obie są przydatne, tylko trzeba wiedzieć w jakich wypadkach jedna posłuży lepiej od drugiej ;).

PODOBNE ARTYKUŁY