Python • kurs podstawowy • lekcja 28
Moduły, import i podział programu
Funkcja obliczeniowa przyda się w kilku programach.
Twój cel: Podzielisz program na dwa moduły i świadomie wybierzesz sposób importu.Funkcje z parametrami i return.
Zbuduj model działania
Możesz umieścić ją w osobnym pliku .py — własnym module. Plik math_tools.py w tej lekcji zawiera funkcję square. Plik main.py używa jej i odpowiada za wynik na ekranie.
Zapisz oba pliki w jednym folderze, a potem uruchom main.py. import math_tools udostępnia nazwę modułu i zapis math_tools.square(5). from math_tools import square udostępnia bezpośrednio nazwę square. W imporcie nie dopisujemy rozszerzenia .py.
Import zwykle wykonuje kod najwyższego poziomu modułu przy jego pierwszym załadowaniu w procesie. Definicje funkcji tworzą funkcje, lecz nie wykonują ich ciał. Gdy dodasz print poza funkcją, pojawi się podczas importu. Biblioteka standardowa, np. math, jest dostarczona z Pythonem; własnych plików nie nazywaj math.py, csv.py ani json.py, bo mogą przesłonić te moduły.
Plik math_tools.py
def square(number):
return number ** 2
Zapisz go obok pliku main.py. Poniżej zawartość main.py.
Przewidź przed uruchomieniem
from math_tools import square
print(square(5))
Porównaj wynik i prześledź mechanizm
25. Import udostępnia funkcję. Dopiero square(5) wywołuje ją i zwraca 25, które print wyświetla. Ciało funkcji nie wykonuje się przy samej definicji.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
25
| Plik | Rola | Przepływ |
|---|---|---|
| math_tools.py | Definicja square | Przyjmuje number, zwraca kwadrat |
| main.py | Import i wywołanie | 5 → square → 25 → print |
Zmień działający program
Użyj import math_tools zamiast from ... import ... i dostosuj wywołanie.
Pierwsza wskazówka
Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.
Porównaj swoją modyfikację
import math_tools
print(math_tools.square(5))
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
25
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Wywołaj funkcję z zaimportowanego modułu.
import math_tools
print(square(5))
Trop do diagnozy
Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.
Zastosuj w nowej sytuacji
Wskazówka do rozpoczęcia
Moduł nadaje kodowi miejsce i rolę. Sposób importu określa dostępne nazwy.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
from messages import greeting
Rozwiązanie do samodzielnej kontroli
Plik messages.py:
def greeting(name):
return f"Cześć, {name}!"
Plik main.py:
from messages import greeting
print(greeting("Ola"))
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
Cześć, Ola!
Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.
Co zabierasz do kolejnego programu?
Moduł nadaje kodowi miejsce i rolę. Sposób importu określa dostępne nazwy.
Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.