Wprowadzenie
Python jest jednym z najczęściej używanych języków programowania na świecie. Moduły są kluczową częścią kodu Pythona. Moduł to po prostu .py plik w kontekście Python 3. Oznacza to, że możesz odnosić się do dowolnego pliku Pythona jako modułu.
Możesz uzyskać te moduły poprzez gotową bibliotekę. Możesz rzucić okiem na Python Standard Library, aby dowiedzieć się więcej. Są one instalowane w Twoim systemie podczas instalacji Pythona. W innych sytuacjach możesz zainstalować te moduły za pomocą menedżera pakietów Pythona pip. Ale co, jeśli chcesz stworzyć niestandardowy moduł? Jeśli tak jest, z pewnością ucieszy Cię wiadomość, że w Pythonie możesz tworzyć własne moduły.
W tym szczegółowym przewodniku przedstawimy kroki, które należy wykonać, aby pisać i importować moduły w Pythonie 3.
Wymagania wstępne
Zanim zaczniemy, musisz upewnić się, że masz zainstalowanego Pythona 3 i skonfigurowane środowisko programistyczne. Możesz postępować zgodnie z naszym samouczkiem dotyczącym instalacji Pythona 3 i konfiguracji lokalnego środowiska programistycznego na Ubuntu 16.04, aby dokończyć instalację, jeśli nie masz jej jeszcze gotowej.
Jak napisać moduł?
Zacznijmy od napisania modułu. Moduł pisze się tak samo, jak każdy inny plik Pythona. Typowy moduł składa się z definicji funkcji, klas i zmiennych. Następnie możesz użyć tego modułu w innych programach w Pythonie.
Aby pomóc Ci to zrozumieć, rozważmy przykład. Załóżmy, że chcemy utworzyć plik o nazwie hello.py. Później zaimportujemy go również do innego pliku. Pierwszym krokiem w tym procesie jest utworzenie funkcji. Funkcja ta będzie służyć do wypisania Hello, World! w ten sposób:
|
1 2 3 |
# Zdefiniuj funkcję def world(): print("Hello, World!") |
W tym momencie uruchomienie polecenia python hello.py nie przyniesie żadnego rezultatu. Dzieje się tak, ponieważ nie przekazaliśmy jeszcze żadnych instrukcji do programu. Aby to zadziałało, musimy zaimportować moduł.
Jak zaimportować moduł?
Aby zaimportować swój moduł i móc użyć jego funkcji, musisz utworzyć drugi plik w tym samym katalogu. Nazwiemy ten nowy plik main_program.py. Powodem, dla którego oba pliki muszą znajdować się w tym samym katalogu, jest to, że musimy wskazać programowi, gdzie znaleźć moduł. Dotyczy to każdego nowego, niestandardowego modułu, który nie jest wbudowany:
|
1 2 3 4 5 |
# Zaimportuj moduł hello import hello # Wywołaj funkcję hello.world() |
Do wywołania funkcji użyliśmy notacji kropkowej z nazwą modułu. Innym sposobem na zrobienie tego jest użycie metody from...import. W tym przypadku wywołamy funkcję jako world() poprzez zaimportowanie modułu jako from hello import world. Na koniec możesz uruchomić polecenie:
|
1 |
python main_program.py |
Polecenie pokaże następujący wynik:
|
1 2 |
Wynik: Hello, World! |
Dodawanie zmiennych do modułu
Następnie zobaczymy, jak dodać zmienne do modułu poprzez umieszczenie definicji w module:
|
1 2 3 4 5 6 |
# Zdefiniuj funkcję def world(): print("Hello, World!") # Zdefiniuj zmienną shark = "Sammy" |
Następnie wywołasz zmienną w funkcji print(). Wywołamy ją w pliku main_program.py :
|
1 2 3 4 5 6 7 |
# Zaimportuj moduł hello import hello # Wywołaj funkcję hello.world() # Wydrukuj zmienną print(hello.shark) |
Uruchomienie programu pokaże następujący wynik:
|
1 2 3 |
Wynik: Hello, World! Sammy |
Dodawanie klasy do modułu
Na koniec zobaczymy, jak można zdefiniować klasę w swoim pliku dla modułu. Kontynuując nasz przykład, utworzymy nową klasę o nazwie Octopus w pliku hello.py. Przypiszemy jej również atrybuty name oraz color. Następnie dodamy funkcję, aby umożliwić jej wydrukowanie:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Zdefiniuj funkcję def world(): print("Hello, World!") # Zdefiniuj zmienną shark = "Sammy" # Zdefiniuj klasę class Octopus: def __init__(self, name, color): self.color = color self.name = name def tell_me_about_the_octopus(self): print("Ta ośmiornica jest " + self.color + ".") print(self.name + " to imię ośmiornicy.") |
Następnie musisz dodać klasę pod koniec pliku main_program.py :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Zaimportuj moduł hello import hello # Wywołaj funkcję hello.world() # Wydrukuj zmienną print(hello.shark) # Wywołaj klasę jesse = hello.Octopus("Jesse", "pomarańczowa") jesse.tell_me_about_the_octopus() |
Możesz wywołać klasę za pomocą polecenia hello.Octopus(). Pokaże ono funkcje i atrybuty klasy Octopus w przestrzeni nazw pliku. W związku z tym możesz zapisać jesse.tell_me_about_the_octopus() w ostatniej linii bez wywoływania hello. Możliwe jest również wywołanie pojedynczego atrybutu klasy bez użycia hello. Na przykład możesz po prostu uruchomić jesse.color. Po uruchomieniu programu zobaczysz następujący wynik:
|
1 2 3 4 5 |
Wynik: Hello, World! Sammy Ta ośmiornica jest pomarańczowa. Jesse to imię ośmiornic'y name. |
Implementowanie kodu za pomocą modułów
Tam, gdzie można używać modułów do określania definicji, można ich również używać do implementacji kodu. Załóżmy, że chcemy zaimplementować funkcję world(). Przepiszemy nasz początkowy plik hello.py całkowicie:
|
1 2 3 4 5 6 |
# Zdefiniuj funkcję def world(): print("Hello, World!") # Wywołaj funkcję wewnątrz modułu world() |
Z pliku main_program.py usuniemy wszystko oprócz instrukcji importu, pozostawiając następującą zawartość:
|
1 2 |
# Zaimportuj moduł hello import hello |
Uruchomienie głównego pliku programu da taki wynik, ponieważ program implementuje i wykonuje funkcję world() :
|
1 2 |
Wynik: Hello, World! |
Jak uzyskać dostęp do modułu z innego katalogu?
Skoro już wiesz, jak tworzyć i modyfikować moduły, musisz wiedzieć, jak uzyskać do nich dostęp z innego katalogu. Jest to przydatne, gdy musisz użyć danego modułu w innym projekcie. Istnieją dwa sposoby, aby to zrobić, które wyjaśnimy poniżej.
-
Dołączanie ścieżek
Pierwszą metodą jest aktywacja ścieżki modułu za pomocą plików programistycznych, które już korzystają z modułu. Niestety, nie oznacza to, że moduł będzie dostępny w całym systemie. Dlatego jest to uważane jedynie za rozwiązanie tymczasowe. Często stosuje się je w fazie rozwoju projektu.
Proces dołączania możesz rozpocząć od zaimportowania modułu sys module and other important modules you need to use. We will import them to the main program file. You can find the sys w bibliotece standardowej Pythona. Jest on potrzebny, ponieważ zawiera podstawowe parametry i funkcje specyficzne dla Twojego systemu.
Rozważmy ponownie nasz poprzedni przykład. Załóżmy, że plik hello.py znajduje się na ścieżce /usr/sammy/ , a plik main_program.py znajduje się w innym katalogu. Najpierw zaimportujemy moduł hello w pliku main_program.py za pomocą modułu sys. Następnie dołączymy /usr/sammy/ do ścieżki:
|
1 2 3 4 5 6 |
import sys sys.path.append('/usr/sammy/') import hello ... |
Jeśli poprawnie ustawisz ścieżkę, plik main_program.py plik uruchomi się bez problemów i bez błędów. Otrzymasz taki sam wynik, jak wtedy, gdy oba pliki znajdowały się w tym samym katalogu.
-
Ścieżka Pythona
Inną opcją, którą możesz wybrać, jest ścieżka Pythona. W tym przypadku dodajesz sam moduł do ścieżki, którą Python przeszukuje pod kątem modułów i pakietów. Jak zapewne się domyślasz, dzięki temu moduł staje się dostępny w całym systemie, co czyni to rozwiązanie trwałym i opłacalnym.
Aby to zrobić, musisz dowiedzieć się, gdzie Python szuka modułów. Będziesz musiał uruchomić interpreter Pythona ze środowiska programistycznego, co wygląda następująco:
|
1 |
python |
Kolejnym krokiem jest zaimportowanie sys modułu:
|
1 |
>>> import sys |
Następnie wyświetl ścieżkę systemową:
|
1 |
>>> print(sys.path) |
Teraz jako wynik zobaczysz ścieżkę systemową. Będzie co najmniej jedna. Jednak w środowisku programistycznym może być ich kilka. Na liście zlokalizuj środowisko, którego używasz. Pamiętaj, że możesz chcieć dodać moduł również do głównej systemowej ścieżki Pythona. Będzie to wyglądać tak:
|
1 2 |
Wynik: '/usr/sammy/my_env/lib/python3.5/site-packages' |
Na koniec przenieś hello.py plik do tego katalogu i zaimportuj moduł w następujący sposób:
|
1 2 |
import hello ... |
Próba zakończy się sukcesem, jeśli program uruchomi plik bez generowania żadnych błędów. W wyniku tego procesu uzyskasz dostęp do modułu z dowolnego katalogu w systemie.
Podsumowanie
Celem tego samouczka było ułatwienie Ci zapoznania się z pisaniem modułów w Pythonie. Jest to bardzo podobne do tego, jak pisze się dowolny pliku .py . Najpierw omówiliśmy, czym właściwie jest moduł Pythona i powiązane z nim funkcje. Następnie dowiedzieliśmy się, jak zastosować te definicje w innych plikach programistycznych w Pythonie. Na koniec poznaliśmy szczegóły dotyczące dostępności modułów. Teraz wiesz już, jak pisać moduły w Pythonie 3, a także jak uzyskiwać do nich dostęp.
Aby dalej poszerzać swoją wiedzę na temat języka programowania Python, zapoznaj się z naszym blogiem w celu uzyskania dodatkowych zasobów:
- Python 3: Przewodnik po konwersji typów danych
- Pętle w Pythonie 3: Używanie instrukcji Break, Continue i Pass
- Używanie formatowania ciągów znaków w Pythonie 3
Miłego programowania!
Komentarze
Brak komentarzy. Bądź pierwszy.