Funkcije u Pythonu — uvod (Thonny)


U ovoj lekciji upoznaćemo se sa pojmom funkcija u Pythonu. Funkcija je poseban deo programa koji obavlja jednu konkretnu stvar — na primer, ispis poruke, sabiranje brojeva ili proveru nekog uslova.

Možeš da zamisliš funkciju kao malu mašinu: kada je pokreneš, ona uradi tačno ono za šta je namenjena.


Funkcije pomažu da program bude kraći, čitljiviji i lakši za razumevanje, naročito kada program postane veći. Umesto da isti kod pišeš više puta, napišeš ga jednom — u funkciji.


Rad u Thonny-ju je idealan za početnike: pišeš kod, sačuvaš fajl i pokreneš ga pritiskom na dugme Run. Kada koristiš funkcije, isti zadatak možeš da izvršiš više puta bez ponovnog pisanja koda.


Zašto koristiti funkcije?


  • Bolja organizacija — program je podeljen na logične celine.
  • Manje grešaka — isti kod se ne ponavlja više puta.
  • Lakše učenje — svaka funkcija ima jasnu ulogu.
  • Lakše izmene — promeniš kod na jednom mestu.

Pisanje funkcije i njeno pozivanje


Važno je da razumeš razliku između:

  • pisanja (definisanja) funkcije
  • pozivanja (korišćenja) funkcije

Kada napišeš funkciju, ona se ne izvršava odmah. Izvršava se tek kada je pozoveš.


Jednostavan primer funkcije


Počnimo od najjednostavnije moguće funkcije — funkcije koja samo ispisuje poruku.



# primer_funkcija.py

def pozdravi():
    print("Zdravo! Dobrodošao u Python funkcije.")

# pozivanje funkcije
pozdravi()

Šta se ovde dešava?

  • def — ključna reč kojom definišemo funkciju
  • pozdravi — ime funkcije
  • () — zagrade koje govore da je ovo funkcija
  • print() — kod koji se izvršava kada se funkcija pozove

Ako izbrišeš liniju pozdravi(), poruka se neće ispisati — jer funkcija postoji, ali nije pozvana.


Još jedan primer


Funkcija može da sadrži više linija koda.



def prikazi_poruku():
    print("Python je zabavan!")
    print("Učimo funkcije korak po korak.")

prikazi_poruku()

Sve linije koje su uvučene ispod def čine telo funkcije.


Mini zadatak


Napiši funkciju koja ispisuje tvoje ime i omiljeni predmet u školi. Zatim pozovi tu funkciju.



def o_meni():
    print("Moje ime je Ana.")
    print("Moj omiljeni predmet je informatika.")

o_meni()

U sledećoj lekciji naučićemo kako funkcije mogu da primaju podatke (parametre) i da vraćaju rezultat — baš kao matematičke formule.


Česte greške početnika kod funkcija


Kada tek učiš funkcije, normalno je da se pojave greške. U nastavku su najčešće greške i objašnjenje kako da ih izbegneš.


1. Pogrešna indentacija (uvlačenje koda)


U Pythonu je indentacija obavezna. Sve linije koje pripadaju funkciji moraju biti uvučene.


Pogrešno:


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

Ovo će izazvati grešku jer print nije uvučen.


Ispravno:


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

□ Savet: U Thonny-ju koristi Tab ili 4 razmaka.


2. Zaboravljen poziv funkcije


Početnici često napišu funkciju, ali zaborave da je pozovu. U tom slučaju se ništa ne dešava kada pokreneš program.


Pogrešno (funkcija se nikad ne pokrene):


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

Ispravno:


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

pozdravi()

3. Zagrade se ne zaboravljaju


Funkcija se uvek poziva sa zagradama.


Pogrešno:


pozdravi

Ispravno:


pozdravi()

4. Ime funkcije mora biti isto


Python razlikuje mala i velika slova. Ako si funkciju nazvao pozdravi, ne možeš je pozvati kao Pozdravi.



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

pozdravi()   # ispravno
Pozdravi()   # greška

Ako dobiješ grešku — ne brini. Greške su deo učenja i znače da si na dobrom putu

Kako Python izvršava funkcije – korak po korak


Da bi funkcije bile potpuno jasne, važno je da razumeš kada se kod izvršava, a kada Python samo „pamti“ šta funkcija treba da radi.




1. Šta se dešava kada Python pročita funkciju?


Pogledaj sledeći primer:



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

print("Kraj programa")

Kada pokreneš ovaj program, ispis će biti:


Kraj programa

Poruka "Zdravo!" se ne ispisuje. Zašto?


  • Python je samo zapamtio kako funkcija izgleda
  • Telo funkcije se ne izvršava dok je ne pozoveš

Definisanje funkcije nije isto što i njeno izvršavanje.




2. Kada se funkcija ZAISTA izvršava?


Funkcija se izvršava tek kada napišeš njeno ime sa zagradama:



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

pozdravi()
print("Kraj programa")

Sada je redosled izvršavanja sledeći:


  1. Python pročita definiciju funkcije
  2. Dolazi do poziva pozdravi()
  3. Program „ulazi“ u funkciju
  4. Izvršava se telo funkcije
  5. Program se vraća nazad i nastavlja dalje



3. Vizuelni tok izvršavanja (blok dijagram)


Možeš da zamisliš izvršavanje ovako:



POČETAK PROGRAMA
      |
      v
Definicija funkcije (nema izvršavanja)
      |
      v
Poziv funkcije
      |
      v
Ulazak u funkciju
      |
      v
Izvršavanje linija u funkciji
      |
      v
Povratak u glavni program
      |
      v
NASTAVAK PROGRAMA

Ovakav način razmišljanja je veoma koristan kod složenijih programa.




4. Česta početnička greška: „Zašto se ništa ne dešava?“


Ako napišeš funkciju, ali je ne pozoveš:



def poruka():
    print("Ovo se neće ispisati")

Program se izvrši bez greške — ali bez ikakvog ispisa. To je normalno ponašanje u Pythonu.


Uvek proveri da li:

  • funkcija postoji
  • funkcija je pozvana



5. Važno upozorenje o imenu fajla


Kada praviš fajl sa Python kodom, nemoj koristiti generička imena koja se mogu sudariti sa Python modulima.


❌ Loši primeri imena fajla:

  • functions.py
  • math.py
  • random.py

Ako to uradiš, Python može pokušati da učita tvoj fajl umesto ugrađenog modula — što dovodi do zbunjujućih grešaka.


✔ Dobri primeri:

  • moje_funkcije.py
  • funkcije_uvod.py
  • vezba_funkcije.py

Dodatni zadaci za vežbu — funkcije u Pythonu (Thonny)


Ovde su predlozi zadataka koji proširuju gradivo sa stranice i pogodni su za vežbanje u Thonny okruženju. Za svaki zadatak dajem kratak opis, početni kostur funkcije i malu napomenu ili test primer.


  1. Pozdravi korisnika (parametar)

    Napraviti funkciju koja prima ime i ispisuje personalizovani pozdrav.

    
    def pozdravi_ime(ime):
        # ispiši npr. "Zdravo, Ana!"
        pass
    
    # primer poziva
    pozdravi_ime("Ana")
        

    Napomena: probaj različita imena i prazne stringove.


  2. Saberi dva broja (vrati vrednost)

    Funkcija prima dva broja i vraća njihov zbir. Zatim rezultat ispiši van funkcije.

    
    def zbir(a, b):
        # vrati zbir
        pass
    
    # primer:
    rez = zbir(5, 7)
    print("Rezultat:", rez)
        

  3. Provera parnosti

    Napiši funkciju je_paran(n) koja vraća True ako je broj paran, inače False.

    
    def je_paran(n):
        pass
    
    print(je_paran(4))   # True
    print(je_paran(7))   # False
        

  4. Faktorijal (iterativno)

    Funkcija fakt(n) računa n!. Počni iterativnim pristupom (petlja).

    
    def fakt(n):
        # pretpostavi n >= 0
        pass
    
    print(fakt(5))  # 120
        

    Bonus: pokušaj i rekurzivnu verziju ako si spreman/la za izazov.


  5. Najveći od tri broja

    Funkcija vraća najveći od tri prosleđena broja (ne koristi max — rešiti logikom).

    
    def maksimum3(a, b, c):
        pass
    
    print(maksimum3(3, 9, 5))  # 9
        

  6. Prebroj samoglasnike

    Funkcija prima tekst i vraća koliko ima samoglasnika (a, e, i, o, u). Ignoriši velika/mala slova.

    
    def prebroj_samoglasnike(text):
        # vrati broj samoglasnika
        pass
    
    print(prebroj_samoglasnike("Dobrodošao u Python"))
        

  7. Prosek liste brojeva

    Funkcija vraća prosečnu vrednost elemenata liste. Pobrini se da lista nije prazna.

    
    def prosek(lista):
        # vrati prosečnu vrednost
        pass
    
    print(prosek([2, 4, 6, 8]))  # 5.0
        

  8. Palindrom (provera)

    Funkcija koja proverava da li je reč (ili fraza bez razmaka) palindrom. Ignoriši velika/mala slova i razmake.

    
    def je_palindrom(s):
        # npr. "Ana" -> True
        pass
    
    print(je_palindrom("Ana"))
    print(je_palindrom("nema palindroma"))
        

  9. Statistika teksta (vraća više vrednosti)

    Funkcija prima tekst i vraća tuple: (broj_reči, broj_karaktera). Prikaži rezultat u glavnom programu.

    
    def tekst_statistika(text):
        # vrati (broj_reci, broj_karaktera)
        pass
    
    r = tekst_statistika("Ovo je kratak tekst.")
    print(r)
        

  10. Mali kalkulator (sa podrazumevanim parametrom)

    Napiši funkciju kalkulator(a, b, op='+') koja podržava sabiranje, oduzimanje, množenje i deljenje (op može biti '+', '-', '*', '/'). Funkcija vraća rezultat ili None ako je operacija nepoznata.

    
    def kalkulator(a, b, op='+'):
        # op: '+', '-', '*', '/'
        pass
    
    print(kalkulator(10, 3, '*'))
    print(kalkulator(10, 0, '/'))  # vodi računa o deljenju sa nulom
        

Bonus izazov

FizzBuzz — napiši funkciju koja za brojeve od 1 do n ispisuje: "Fizz" ako je deljiv sa 3, "Buzz" ako je deljiv sa 5, "FizzBuzz" ako je deljiv sa oba, inače ispiši broj. Ovo je sjajan zadatak za kombinovanje petlji i funkcija.


def fizzbuzz(n):
    pass

fizzbuzz(15)

Kako vežbati: Otvori Thonny, napravi novi fajl, kopiraj kosture funkcija i postepeno dopuni telo funkcija. Testiraj svaki zadatak sa nekoliko vrednosti. Ako želiš, mogu ti poslati gotova rešenja ili kratke testove za svaki zadatak.

Skriveni mini kviz — Funkcije u Pythonu

Klikni da proveriš da li razumeš šta su funkcije, kako se definišu, pozivaju i kako se ponaša kod unutar funkcije.

Otvori kviz

Mini kviz: Funkcije

1. Šta će se desiti ako funkcija nije pozvana?




2. Šta ispisuje sledeći program?


def poruka():
print("Zdravo")


poruka()



3. Koliko puta će se ispisati poruka?


def test():
print("Python")


test()
test()



Zadaci za samostalno rešavanje — Funkcije (7. i 8. razred)


Zadaci su poređani od lakših ka težim. Poslednji zadatak je približan takmičarskom nivou. Pokušaj da svaki zadatak rešiš samostalno pre nego što pređeš na sledeći.


  1. Ispis poruke

    Napiši funkciju koja ispisuje poruku: "Učim funkcije u Pythonu". Funkciju pozovi dva puta.


  2. Funkcija sa jednim parametrom

    Napiši funkciju koja prima ime učenika i ispisuje poruku: "Učenik <ime> je uspešno pokrenuo funkciju."


  3. Sabiranje brojeva

    Napiši funkciju koja prima dva cela broja i vraća njihov zbir. U glavnom programu ispiši rezultat.


  4. Funkcija sa proverom uslova

    Napiši funkciju koja prima jedan broj i vraća poruku "Pozitivan", "Negativan" ili "Nula".

    Uputstvo: koristi if, elif i else unutar funkcije i vrati tekstualnu vrednost.


  5. Takmičarski nivo — ponavljanje poziva funkcije

    Napiši funkciju koja prima jedan ceo broj n i ispisuje sve brojeve od 1 do n, ali tako da se ispis vrši pomoću dodatne funkcije za ispis jednog broja.

    Uputstvo: koristi jednu funkciju za logiku (petlju), a drugu samo za ispis. Razmisli zašto je ovo dobar stil programiranja.