CodeGym /Kursy /Python SELF PL /Tworzenie własnego pakietu

Tworzenie własnego pakietu

Python SELF PL
Poziom 19 , Lekcja 1
Dostępny

2.1 Wprowadzenie do pakietów

Pakiety to sposób na strukturyzację modułów w katalogi. Pakiet to katalog, zawierający plik __init__.py i jeden lub więcej modułów. Plik __init__.py może być pusty lub zawierać kod inicjujący pakiet.

Przykład struktury pakietu/katalogu


mypackage/
    __init__.py
    module1.py
    module2.py
Zawartość pliku __init__.py

# __init__.py
from .module1 import func1
from .module2 import func2
Zawartość pliku module1.py

# module1.py
def func1():
    return "Function 1"
Zawartość pliku module2.py

# module2.py
def func2():
    return "Function 2"

Przykład kodu używającego funkcji tego pakietu:


import mypackage

print(mypackage.func1())  # Output: Function 1
print(mypackage.func2())  # Output: Function 2

Dajmy teraz spróbę napisać własny pakiet, a przy okazji zrozumiemy, jak działają inne.

2.2 Tworzymy własny pakiet krok po kroku

Krok 1: Tworzenie struktury pakietu

Pierwszym krokiem jest utworzenie struktury katalogów i plików dla waszego pakietu. Na przykład utworzymy pakiet o nazwie mypackage, zawierający dwa moduły: module1.py i module2.py.

Przykład struktury pakietu:


mypackage/
    __init__.py
    module1.py
    module2.py

Opis plików:

  • __init__.py: Ten plik może być pusty lub zawierać kod inicjujący pakiet. Jest potrzebny, aby Python rozpoznawał katalog jako pakiet.
  • module1.py i module2.py: Te pliki zawierają funkcje, klasy i zmienne, które chcecie uwzględnić w swoim pakiecie.

Krok 2: Pisanie kodu dla modułów

Napiszmy prosty kod dla naszych modułów.

module1.py


def func1():
    return "Function 1 from module1"

module2.py


def func2():
    return "Function 2 from module2"

__init__.py

Aby zaimportować funkcje z naszych modułów na poziom pakietu, dodamy je do __init__.py.


from .module1 import func1
from .module2 import func2

Teraz, gdy zaimportujecie pakiet, funkcje func1 i func2 będą dostępne bezpośrednio.

Krok 3: Testowanie pakietu

Utwórzcie plik test.py w tym samym katalogu, gdzie znajduje się katalog mypackage, i użyjcie pakietu w tym pliku do testowania.

test.py


import mypackage

print(mypackage.func1())  # Output: Function 1 from module1
print(mypackage.func2())  # Output: Function 2 from module2

Uruchomcie test.py, aby upewnić się, że wasz pakiet działa poprawnie.

2.3 Użycie funkcji dir()

Kiedy zaimportujecie moduł lub pakiet, możecie użyć funkcji dir(), aby uzyskać listę wszystkich dostępnych atrybutów i metod w tym module. Jest to szczególnie przydatne, jeśli pracujecie z nowym lub nieznanym modułem i chcecie szybko zobaczyć, jakie funkcje i klasy są dostępne.

Przykład: Badanie standardowego modułu math

Przyjrzyjmy się przykładowemu użyciu dir() do badania standardowego modułu math.


import math

print(dir(math))

Ten kod importuje moduł math i wyświetla listę wszystkich dostępnych atrybutów i metod. Wynik będzie wyglądał mniej więcej tak:


['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Ta lista zawiera wszystkie funkcje i stałe zdefiniowane w module math, takie jak sin, cos, tan, pi i inne.

Użycie dir() do własnych modułów

Możecie również użyć dir() do własnych modułów. Załóżmy, że macie plik mymodule.py z poniższą zawartością:


# mymodule.py
def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159

Możecie zaimportować ten moduł i użyć dir() do badania jego zawartości:


import mymodule

print(dir(mymodule))

Wynik będzie następujący:


['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'greet', 'pi']

Lista zawiera 8 specjalnych atrybutów (zaczynających się od podkreślenia) modułu mymodule, a na końcu jest wasza metoda greet oraz zmienna pi.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION