Moduły to po prostu pliki zawierające funkcje. Stosuje się je po to by stworzyć sobie biblioteki narzędzi i odseparować ich kod od kodu właściwego programu. Moduły można też dystrybuować by wykorzystywać je w innych aplikacjach.
Stwórzmy dwa nowe pliki :
W pierwszym umieszczamy kod:
def hello():
'''Ta funkcja wypisuje na ekranie tekst hello world!'''
print("hello world!")
W drugim :
def sayno():
print('NO!')
def sayyes():
print('YES')
def add(a,b):
return a+b
Tworzymy teraz trzeci plik, w którym będzie nasz "właściwy program" i na początek umieszczamy w nim taką instrukcję:
import paczka
Taki zapis oznacza "zassanie" zawartości modułu "paczka" do naszego pliku w taki sposób, że funkcje umieszczone w tym importowanym module stają się widoczne w naszym programie. Możemy teraz wywołać dowolną publiczną funkcję z zaimportowanego modułu w ten sposób:
paczka.hello()
Gdyby moduł paczka miał dłuższą nazwę, konieczność podawania jej przy każdym wywołaniu funkcji w niej zawartej byłoby conajmniej niehumanitarna ;). Jeżeli chcemy skrócić wywołanie, możemy przy okazji importu modułu nadać mu lokalny alias:
import paczka as p
dzięki czemu funkcje z tego modułu będzie można wywoływać teraz w ten sposób:
p.hello()
Istnieje też możliwość importu pojedynczych funkcji z modułu (ten może być przecież bardzo duży i zawierać wiele niepotrzebnych nam, a podlegających parsowaniu funkcji). Dzięki temu będziemy mogli przy okazji wywoływać zaimpotowane funkcje bez poprzedzania ich nazw nazwą modułu czy jego aliasem.
from paczka2 import add, sayno
sayno()
Aby sprawdzić dostępne w module funkcje, możemy posłużyć się:
print(dir(paczka))
Wyświetli nam się lista na konsoli:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hello']
Jeśli chcemy, możemy teraz sprawdzić dokumentację jakiejś wybranej funkcji:
help(moduly_pomocnicze.hello)
Zobaczymy wtedy to co zadeklarowaliśmy jako dokumentację danej funkcji:
hello()
Ta funkcja wypisuje na ekranie tekst hello world!
Komentarze (0)
Brak komentarzy...