W raz z rozwojem naszych programów, będziemy chcieli dzielić je na mniejsze pliki, które z jednej strony będą sprawiać, że nasz kod będzie łatwiejszy do zarządzania oraz czytania, z drugiej strony, łatwiej będzie raz napisany kod użyć w innych programach. Przez nas, jak i przez kogoś innego.
Taki, podzielony, wyodrębniony kod, nazywamy modułami, natomiast poniżej wyjaśnimy jak je tworzyć oraz jak używać modułów już stworzonych przez innych. Zaczynajmy!
Tworzymy moduł!
Zanim skorzystamy z modułów przygotowanych przez innych programistów, napiszemy nasz własny. Zadanie może wydawać się skomplikowane, jednak w Pythonie tworzenie modułów jest bardzo proste i szybko to opanujemy.
Powiedzmy, że napisaliśmy funkcję, która pobiera jako parametr tekst i zwraca liczbę słów. Nasz plik z kodem źródłowym może się nazywać program.py i wyglądać następująco
def zlicz(tekst): wyrazy = 1 for i in tekst: if i == ' ': wyrazy += 1 return wyrazy print (zlicz("Ala ma kota"))
W jednym pliku definiujemy funkcję oraz z niej korzystamy. Co jeżeli:
- Co jeżeli będziemy mieć wiele funkcji, które sprawią że nasz plik zrobi się bardzo duży?
- Co jeżeli będziemy z tej samej funkcji skorzystać w innym naszym programie?
Otóż tę sama funkcję możemy zapiać w osobnym pliku. Powiedzmy mod1.py i z niej skorzystać w naszym pliku program.py.
plik mod1.py
def zlicz(tekst): wyrazy = 1 for i in tekst: if i == ' ': wyrazy += 1 return wyrazy
plik program.py
import mod1 print (mod1.zlicz("Ala ma kota"))
i analogicznie, pisząc inny program, możemy skorzystać z tej samej funkcji
plik innyProgram.py
import mod1 x = mod1.zlicz("tekst do zliczenia wyrazów")
Otóż proszę Państwa, właśnie napisaliśmy nasz pierwszy moduł 🙂
Co się stało?:
- napisaliśmy funkcję 'zlicz’, w osobnym pliku, również z rozszerzeniem typowym dla Python „.py” – mod1.py
- plik jest umieszczony w tym samym katalogu co plik „program.py”
- w pliku, w którym chcemy z naszej funkcji skorzystać, wykonujemy polecenie 'import’, które informuje Python o naszych zamiarach. Za funkcją, umieszczamy nazwę pliku, ale bez rozszerzenia. import mod1
- Wywołujemy funkcję poprzez odwołanie się do modułu, w którym nasza funkcja się znajduje oraz jej nazwę mod1.zlicz()
Proste, bardzo proste.
Kluczem jest instrukcja import. Aczkolwiek mamy alternatywę. Możemy użyć innego sposobu 'zaimportowania’ naszej funkcji, a mianowicie
plik program.py
from mod1 import zlicz x = zlicz ("Nowy sposób importu modułu")
W tym przypadku nie musimy odwoływać się do funkcji zlicz, poprzez podanie nazwy modułu, a jedynie samą nazwę.
Import modułów napisanych przez innych.
W naszej roli analityka czy też programisty, nie raz będziemy chcieć zainstalować oraz użyć modułów już przygotowanych. W kursie o najważniejszych bibliotekach python, jest pokazanych ich wiele.
Są to z reguły moduły, wyspecjalizowane do wykonywania określonych zadań. Mieliśmy również do czynienia z nimi w ramach ćwiczeń Python dla początkujących, gdzie używaliśmy modułu random czy też time.
Aby móc z takiego moduły skorzystać, w pierwszej kolejności, należy taki moduł zainstalować. Jeżeli zainstalowaliśmy oprogramowanie Anacoda, wiele modułów jest instalowanych razem z nim. Jeżeli nie, to używamy komendy pip
pip
pip jest programem, który może zainstalować wskazane przez nas pakietów, zawierających moduły, które następnie możemy zaimportować poleceniem import. Różnica pomiędzy pakietem a modułem jest taka, że moduł jest z reguły pojedynczym plikiem z rozszerzeniem .py, natomiast pakiet oznacza kolekcję / katalog z modułami.
Listę wszystkich modułów, które możemy zainstalować znajdziemy na https://pypi.org
Aby zainstalować pożądany przez nas moduł,wykonujemy następujące polecenie:
$ pip install <nazwa pakietu>
np:
$ pip install flask
a nastepnie, możemy zaimportować nasz moduł, za pomocą polecenia 'import flask’. Więcej na temat pip, znajdziemy w PIP – zarządzanie pakietami i modułami w języku Python
Podsumowując. Moduły i pakiety w Python to rzecz powszechna. Z jednej strony będziemy tworzyć nasze własne, z drugiej strony korzystać z przygotowanych przez innych. Zarówno program pip jak i cała koncepcja modułów, jest oczywiście bardziej rozbudowana, jednak wiedza z tego artykułu, jest tym czego potrzebujemy aby swobodnie poszerzać swoją wiedzę oraz umiejętności z zakresu Python.
Python, NIE tylko dla początkujących
- Wstęp do kursu
- Moduły i pakiety <– bieżąca lekcja
- Programowanie obiektowe – wstęp
- Programowanie obiektowe – dziedziczenie
- Programowanie obiektowe – hermetyzacja
- Mini projekt – Organizer
- Funkcje rekurencyjne w Python
- Pisanie skryptów w Python
- Mini projekt – tajny agent, generator haseł
- *args oraz **kwargs
- Dekoratory w Python
- Mini projekt – tajny agent – kontakty
- Odwzorowanie list
- Podsumowanie oraz dalsze kroki