Pakiety Pythona: jak je tworzyć i importować?

W tym artykule nauczysz się dzielić bazę kodu na czyste, wydajne moduły przy użyciu pakietów Pythona. Nauczysz się także importować i używać własnych lub zewnętrznych pakietów w programie w języku Python.

Wideo: Python Packages: Uporządkuj swój kod

Co to są paczki?

Zwykle nie przechowujemy wszystkich naszych plików na naszym komputerze w tej samej lokalizacji. Używamy dobrze zorganizowanej hierarchii katalogów dla łatwiejszego dostępu.

Podobne pliki są przechowywane w tym samym katalogu, na przykład możemy przechowywać wszystkie utwory w katalogu „ muzyka ”. Analogicznie do tego, Python ma pakiety dla katalogów i moduły dla plików.

W miarę jak nasza aplikacja powiększa się o wiele modułów, umieszczamy podobne moduły w jednym pakiecie, a różne moduły w różnych pakietach. To sprawia, że ​​projekt (program) jest łatwy w zarządzaniu i koncepcyjnie przejrzysty.

Podobnie, ponieważ katalog może zawierać podkatalogi i pliki, pakiet Pythona może zawierać pakiety podrzędne i moduły.

Katalog musi zawierać plik o nazwie __init__.py, aby Python mógł uznać go za pakiet. Ten plik może pozostać pusty, ale generalnie umieszczamy kod inicjujący dla tego pakietu w tym pliku.

Oto przykład. Załóżmy, że tworzymy grę. Jedna z możliwych organizacji pakietów i modułów mogłaby wyglądać tak, jak pokazano na poniższym rysunku.

Struktura modułu pakietu w programowaniu w języku Python

Importowanie modułu z pakietu

Możemy importować moduły z pakietów za pomocą operatora kropki (.).

Na przykład, jeśli chcemy zaimportować startmoduł z powyższego przykładu, można to zrobić w następujący sposób:

 import Game.Level.start

Teraz, jeśli ten moduł zawiera funkcję o nazwie select_difficulty(), musimy użyć pełnej nazwy, aby się do niej odwołać.

 Game.Level.start.select_difficulty(2)

Jeśli ta konstrukcja wydaje się długa, możemy zaimportować moduł bez prefiksu pakietu w następujący sposób:

 from Game.Level import start

Możemy teraz wywołać tę funkcję w następujący sposób:

 start.select_difficulty(2)

Innym sposobem importowania tylko wymaganej funkcji (lub klasy lub zmiennej) z modułu w pakiecie byłby następujący:

 from Game.Level.start import select_difficulty

Teraz możemy bezpośrednio wywołać tę funkcję.

 select_difficulty(2)

Chociaż łatwiejsza, ta metoda nie jest zalecana. Korzystanie z pełnej przestrzeni nazw pozwala uniknąć nieporozumień i zapobiega kolizji dwóch takich samych nazw identyfikatorów.

Podczas importu pakietów Python patrzy na listę katalogów zdefiniowanych w programie sys.path, podobnie jak w przypadku ścieżki wyszukiwania modułów.

Interesujące artykuły...