Modularno programiranje — moduli i import


Kada program postane veći, nije praktično da sav kod pišemo u jednom fajlu. Zato koristimo modularno programiranje.

Modularno programiranje znači da program delimo na manje delove — posebne Python fajlove koji se zovu moduli. Svaki modul sadrži funkcije i promenljive koje se bave jednom konkretnom stvari.


Na primer:

  • jedan modul može da računa matematiku
  • drugi modul može da radi sa tekstom
  • glavni program koristi te module

Ovako program postaje čitljiviji, lakši za razumevanje i lakši za proširivanje.


Zašto koristiti module?


  • Bolja organizacija — kod je podeljen u logične celine
  • Ponovna upotreba — isti modul možeš koristiti u više projekata
  • Lakše testiranje — proveravaš deo po deo
  • Manje grešaka — ne ponavljaš isti kod više puta

Kako napraviti i koristiti svoj modul


Modul je običan Python fajl (.py). U njega pišemo funkcije, a zatim ga koristimo u drugom fajlu.



# fajl: pomocne_funkcije.py

def pozdravi():
    print("Zdravo iz modula!")

U glavnom programu taj modul uvozimo pomoću import.



# fajl: glavni.py

import pomocne_funkcije

pomocne_funkcije.pozdravi()

U Thonny-ju je važno da oba fajla budu u istoj fascikli. Pokrećeš fajl glavni.py, a funkcija se izvršava iz modula.


Različiti načini uvoza modula


Postoji više načina da uvezeš modul, u zavisnosti od potrebe.


1. Običan import


import math

print(math.sqrt(16))

Pozivaš funkcije tako što napišeš ime_modula.ime_funkcije.


2. Import sa aliasom (skraćenim imenom)


import math as m

print(m.sqrt(25))

Alias se često koristi da bi se kraće pisalo.


3. Uvoz konkretne funkcije iz modula


from math import sqrt

print(sqrt(36))

Ovde ne moraš da pišeš ime modula ispred funkcije.


Primer: više funkcija u jednom modulu



# fajl: matematika.py

def saberi(a, b):
    return a + b

def pomnozi(a, b):
    return a * b


# fajl: program.py

import matematika

print(matematika.saberi(3, 4))
print(matematika.pomnozi(5, 6))

Na ovaj način modul postaje mala „biblioteka“ funkcija.


Paketi (kratak uvod)


Kada projekat postane veći, module možemo grupisati u pakete (fascikle).



projekat/
│
├── glavni.py
└── alati/
    ├── __init__.py
    └── matematika.py

Tada modul uvozimo ovako:



from alati.matematika import saberi

print(saberi(10, 5))

Za sada je dovoljno da razumeš ideju — paketi služe za još bolju organizaciju većih projekata.


Dobre prakse i česte greške pri radu sa modulima


Kada koristiš module, važno je ne samo da znaš kako da ih uvezeš, već i kako da ih pravilno koristiš. Ovo su najvažniji saveti za početnike.


Dobre prakse


  • Jedan modul — jedna svrha
    Modul treba da radi jednu glavnu stvar. Na primer: jedan modul za matematiku, drugi za rad sa tekstom.

  • Jasna i smislena imena fajlova
    Ime modula treba da opisuje šta se u njemu nalazi (matematika.py, tekst_alati.py).

  • Korišćenje import bez zvezdice
    Bolje je pisati:
    import matematika
    nego:
    from matematika import *

  • Funkcije sa jasnom ulogom
    Svaka funkcija treba da radi jednu stvar i da ima razumljivo ime.

  • Komentari i kratki opisi
    Kratak komentar na početku modula pomaže drugima (i tebi kasnije) da razumeju čemu modul služi.

Česte greške početnika


  • Fajlovi nisu u istoj fascikli
    Ako Python ne može da pronađe modul, proveri da li su fajlovi u istom folderu.

  • Pogrešno ime modula
    Ime fajla mora tačno da se poklapa sa imenom u import naredbi.

  • Zaboravljeno ime modula pri pozivu funkcije
    Ako koristiš običan import, funkciju moraš pozvati kao:
    ime_modula.ime_funkcije()

  • Prepisivanje koda umesto modula
    Ako isti kod kopiraš više puta — to je znak da treba da napraviš modul.

Važna napomena


Ako vidiš poruku ModuleNotFoundError, to znači da Python ne može da pronađe modul. Najčešći uzrok je pogrešno mesto fajla ili pogrešno ime.


Modularno programiranje se uči postepeno — što više pišeš sopstvene module, to će ti ovaj način rada biti prirodniji.


Skriveni mini kviz — Python moduli i import

Klikni da proveriš da li razumeš kako funkcionišu moduli, različiti oblici import naredbi i organizacija koda u više fajlova.

Otvori kviz

Mini kviz: Moduli i import

1. Šta predstavlja Python modul?




2. Kako pravilno pozivaš funkciju pozdravi iz modula pomocne?


import pomocne
        



3. Šta radi sledeća naredba?


from math import sqrt
        



4. Koji je dobar razlog za korišćenje modula?




5. Gde se najčešće nalazi fajl koji uvoziš kao modul (u Thonny-ju)?







Zadaci za samostalan rad — Moduli i import (7. i 8. razred)


Zadaci su raspoređeni od lakih ka težim. Cilj je da samostalno vežbaš pravljenje modula, uvoz funkcija i organizaciju koda.


  1. Laki zadatak — jednostavan modul

    Napravi modul pozdravi.py sa funkcijom pozdravi() koja ispisuje tvoje ime i pozdrav. U glavnom fajlu glavni.py uvezi modul i pozovi funkciju.


  2. Modul sa više funkcija

    Napravi modul matematika.py sa funkcijama saberi(a, b) i oduzmi(a, b). U glavnom programu pozovi obe funkcije sa nekoliko primera i ispiši rezultate.


  3. Import sa aliasom

    Napravi modul tekst_alati.py sa funkcijom obrni_string(s). U glavnom programu uvezi modul koristeći alias import tekst_alati as ta i pozovi funkciju preko aliasa.


  4. Više fajlova i funkcija

    Napravi dva modula: brojevi.py sa funkcijama veci(a,b) i manji(a,b), i program.py koji koristi obe funkcije i ispisuje rezultate.

    Uputstvo: Obrati pažnju da se fajlovi nalaze u istoj fascikli i da koristiš import.


  5. Takmičarski nivo — mini biblioteka funkcija

    Napravi modul alati.py koji sadrži najmanje 3 različite funkcije po tvom izboru (npr. računanje kvadrata, sabiranje, obrada teksta). Napravi glavni program koji uveze modul i koristi sve funkcije.

    Uputstvo: Pazi da imena funkcija budu jasna i logična. Razmisli kako bi organizovao kod da kasnije možeš da dodaješ nove funkcije bez problema.


Savet: Ako nisi siguran kako funkcioniše uvoz, napravi male testove: pozovi funkcije i vidi rezultate. Postepeno dodaj nove funkcije i module.


Sledeći korak — primena znanja kroz projekat


U ovoj lekciji naučio si kako da koristiš funkcije i kako da organizuješ kod pomoću modula. Sledeći logičan korak je da sve to primeniš u pravom programu.


U narednoj lekciji radićemo mini projekat u kome ćemo poznatu igru „Pogodi broj“ preraditi tako da:


  • kod bude podeljen na više funkcija
  • program koristi više fajlova (module)
  • logika igre bude jasnija i lakša za proširenje

Ovaj projekat je namenjen učenicima koji žele da naprave korak dalje i rade kao pravi programeri.


➡ Mini projekat: Refaktoriši igru „Pogodi broj“