Większy program warto podzielić na moduły. W module możemy umieścić pojedynczą klasę lub funkcję, lub wiele klas i funkcji. Kryterium podziału powinna być logika, podobne razem.
tworzymy plik przyklad.py z jedną klasą w module
i importujemy:
1 2 3 | import przyklad from przyklad import Nazwaklasy |
ewentualnie:
1 | from przyklad import * |
Taki sposób importu umożliwia nie odwoływanie się do nazwy moduły przy wywoływaniu metod.
Można nadać importowanemu modułowi
1 | import nazwamodulu as naszanazwamodulu |
lub klasie naszą własną nazwę którą będziemy wywoływać:
1 | from osobaModule import Osoba as Naszaosoba |
Pakiety
Kolekcja modułów w katalogu.
Żeby umożliwić import z katalogu, musi zawierać plik __init__.py (może być pusty)
importowanie z poza katalogu:
1 | import nazwapakietu.nazwamodulu |
lub:
1 | from nazwapakietu.nazwamodulu import NazwaKlasy |
importowanie z katalogu w którym jest pakiet
1 | from .nazwamodulu import NazwaKlasy |
i z katalogu wyżej:
1 | from ..nazwamodulu import NazwaKlasy |
Zapis i odczyt pliku.
zapis tradycyjny:
1 2 3 4 5 6 7 | def zapis(self): print("zapisuje plik o nazwie: ",self.nazwa,".txt") plik=open(str(self.nazwa)+".txt","w") try: plik.write("tresc zapisu może być zmienna z zawartością") finally: plik.close() |
odczyt tradycyjny (z wrzuceniem w listę i oddzieleniem średnikami)
1 2 3 4 5 6 7 | def odczyt(self): plik=open(str(self.nazwa)+".txt") try: tekst=plik.read() finally: plik.close() lista88=tekst.split(";") |
odczyt i zapis za pomocą modułu pickle (nie trzeba zamykać i otwierać pliku)
1 2 3 4 5 6 7 8 9 | import pickle x="Dzień Dobry" with open("plik.bin" , "wb" ) as file : pickle.dump(x ,file) with open("plik.bin" , "rb" ) as file : z=pickle.load(file) print(z) |
do pliku plik.bin zapisaliśmy tekst ze zmiennej 'x' następnie do zmiennej 'z' odczytaliśmy z pliku ten tekst