Spis treści[Ukryć][Pokazać]
Ten wykład obejmie moduły i pakiety w Pythonie.
Są sposobem na uporządkowanie kodu w postaci plików i są bardzo ważne, jeśli zamierzasz tworzyć aplikacje internetowe w Pythonie
Moduły
Moduł w Pythonie to w zasadzie plik z kodem Pythona, którego używamy do organizowania naszego kodu w pliki. Pomyśl o tym jak o sekcjach w supermarkecie. Kiedy idziesz do supermarketu, są różne sekcje na owoce, warzywa, środki czystości itp. Nie widzisz jednej sekcji ze wszystkimi produktami.
To ta sama koncepcja w programowaniu. Zamiast pisać cały nasz kod ze wszystkimi funkcjami i klasami w main.py, dzielimy nasz kod na wiele plików. Każdy plik jest nazywany modułem. Dzięki temu nasz kod jest nie tylko lepiej zorganizowany i ustrukturyzowany, ale mamy również możliwość ponownego wykorzystania naszego kodu. Zobaczmy to na przykładzie.
Zdefiniujmy dwie funkcje do przeliczania wagi z funtów na kilogramy i odwrotnie.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Teraz możemy wziąć te dwie funkcje i umieścić je w osobnym module o nazwie „konwertery”, a następnie zaimportować je do dowolnego programu, który potrzebuje tych funkcji konwertera. Pokażę ci, jak to zrobić.
Otwórzmy nasz panel projektu i kliknij prawym przyciskiem myszy projekt i dodajmy nowy plik. Nazwiemy ten plik „Converters.py”.
Teraz skopiuj kod z domyślnego pliku i wklej go do „Converters.py”.
Dzięki temu wyczyściliśmy nasz główny moduł i nie jest on nadęty różnymi funkcjami. Gdy piszemy więcej funkcji z klasami, umieszczamy je w odpowiednich modułach. Moduł powinien zawierać wszystkie powiązane funkcje i klasy. Teraz chcemy zaimportować moduł konwerterów do naszego modułu aplikacji. Aby to zrobić, napisz import converters
na górze bez rozszerzenia „.py”.
Możemy uzyskać dostęp do członków modułu za pomocą operatora kropki podobnego do metod.
Przeliczmy 70 kg na funty:
Istnieje również inna składnia importowania modułów. Zamiast importować cały moduł, możemy zaimportować z niego określone funkcje. Możemy pisać from Converters import
i naciśnij „control + spacja, aby wyświetlić listę dostępnych funkcji. Dzięki temu możemy bezpośrednio wywołać tę funkcję.
Ćwiczenie
Oto twoje ćwiczenie.
Wiąże się to z ćwiczeniem z wykładu, na którym omawialiśmy „na pętle” gdzie napisaliśmy program do znalezienia największej liczby z listy
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Ten kod obecnie nie ma organizacji. Nie mamy żadnych funkcji ani modułów, a program jest napisany w jednym pliku. Jest to w porządku w przypadku małych programów, ale w miarę rozwoju programów musisz odpowiednio zorganizować swój kod w klasy i moduły. Dlatego w ramach tego ćwiczenia chcę, żebyś napisał funkcję, nazwij ją find_max
. Ta funkcja powinna wziąć listę i zwrócić największą liczbę z tej listy. Następnie umieść tę funkcję w osobnym module, wyodrębnij ją stąd i umieść w module o nazwie utils
. Ten moduł powinien zawierać kilka funkcji użytkowych. Importuj utils
moduł do bieżącego modułu i zadzwoń find_max
funkcjonować. Na koniec uzyskaj wynik i wydrukuj go na terminalu.
To ćwiczenie jest trochę trudne, ale łatwe do wykonania.
Rozwiązanie
Zacznij od zdefiniowania funkcji find_max
i dodaj parametr o nazwie liczby. Wewnątrz tej funkcji napisz algorytm znajdowania największej liczby na liście.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Zapisz ten kod w pliku „utils.py” jako moduł.
Wracając do naszego głównego programu, po prostu zaimportuj moduł za pomocą jednej z dwóch składni i po prostu wykonaj logikę.
Jedną rzeczą, na którą muszę zwrócić twoją uwagę, jest osłabienie max
. Powodem tego jest max
jest wbudowaną funkcją w Pythonie i przedefiniujemy ją. Więc to jest ostrzeżenie od Kompilator Pythona że nie możemy już używać max jako wbudowanej funkcji.
Wbudowane moduły w Pythonie
Python jest dostarczany ze standardową biblioteką, która zawiera kilka modułów do typowych zadań, takich jak wysyłanie wiadomości e-mail, praca z datą i godziną, generowanie losowych wartości i haseł i tak dalej. W Pythonie jest już tak wiele modułów, co oznacza, że istnieje już wiele funkcji, które możemy ponownie wykorzystać. Możesz znaleźć te moduły tutaj.
pakiety
Pakiety to w zasadzie inny sposób organizowania naszego kodu na moduły. Prawdziwy projekt może zawierać setki, a nawet tysiące modułów, a z czasem nasz katalog rozrośnie się tyloma plikami. Dlatego lepszym podejściem jest organizowanie powiązanych modułów wewnątrz pakietu, co sprawia, że pakiet jest pojemnikiem na wiele modułów.
Do projektu dodawany jest nowy katalog i wszystkie powiązane moduły są dodawane do tego katalogu. Jako przykład pomyśl o centrum handlowym. W centrum handlowym istnieją różne działy odzieży męskiej, damskiej i dziecięcej, które są jak paczki. Każda sekcja ma różne obszary dla różnych rodzajów produktów, takich jak buty, koszulki i kurtki. Pomyśl o nich jako o modułach.
Zobaczmy, jak tworzyć i używać pakietów w Pythonie.
Najpierw dodaj nowy katalog z panelu projektu. Nazwijmy to „eCommerce”. Ten pakiet będzie zawierał wszystkie moduły związane z aplikacją eCommerce.
Wciąż jest to pusty katalog i aby przekonwertować go na pakiet, musimy w nim utworzyć specjalny plik. Dodaj nowy plik Pythona w tym katalogu i nazwij go „__init__”. Jest to specjalna konwencja w Pythonie i kiedy interpreter Pythona widzi plik o tej nazwie w katalogu, traktuje ten katalog jako pakiet.
Mamy też alternatywną i zwięzłą metodę tworzenia pakietu. Wystarczy kliknąć prawym przyciskiem myszy panel projektu i utworzyć pakiet Pythona z listy. Nazwij go „eCommerce” i to wszystko. Automatycznie utworzy katalog z plikiem Pythona o nazwie „__init__”.
Teraz stwórzmy moduł w paczce i nazwijmy go „wysyłka”. W tym module stwórzmy prostą funkcję do obliczania kosztów wysyłki.
def calc_shipping():
print("calc_shipping")
Aby uzyskać dostęp do tej funkcji w naszym głównym module, musimy uzyskać do niej dostęp poprzez pakiet e-commerce. Po raz kolejny mamy dwie metody importowania tego modułu.
W pierwszej metodzie możemy zaimportować cały moduł, a następnie niezależnie wywołać funkcję tak:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Jednak przy takim podejściu wywołanie jednej z funkcji do tego modułu wymaga poprzedzenia jej przedrostkiem eCommerce.shipping.
To bardzo gadatliwe. Tak więc podczas pracy z pakietami często stosujemy drugie podejście i używamy from
komunikat.
from eCommerce.shipping import calc_shipping
calc_shipping()
Jeśli masz wiele funkcji w jednym module, możesz zaimportować je wszystkie w jednym wierszu, używając przecinków między nimi. Załóżmy, że w naszym module wysyłkowym jest inna funkcja do obliczania podatku. To zostanie zaimportowane w ten sposób:
from eCommerce.shipping import calc_shipping, calc_tax
Można również importować poszczególne moduły i pozostawiać funkcje do późniejszego wywoływania w programie. Zaimportujmy wysyłkę modułu, a następnie użyjmy operatora kropki do wywołania funkcji calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zakończyć!
Pakiety i moduły są niezwykle ważne w Pythonie. Zwłaszcza, gdy chcesz pracować z frameworkiem takim jak Django, który służy do budowania Aplikacje internetowe z Pythonem. Django przyjrzymy się podczas kolejnego kursu Pythona.
Był to ostatni konwencjonalny wykład z tej serii. Następny wykład będzie odbiegał od naszego zwykłego formatu i poznamy kilka ważnych przypadków użycia w Pythonie. To będzie oznaczać koniec tej serii i przejdziemy do następnej serii Pythona. Czekajcie na to.
Dodaj komentarz