Moduły, import i podział programu

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Moduły, import i podział programu
Required In Progress

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
Moduł nadaje kodowi miejsce i rolę. Sposób importu określa dostępne nazwy.
Moduł nadaje kodowi miejsce i rolę. Sposób importu określa dostępne nazwy.

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
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

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.