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 funkcijupozdravi— ime funkcije()— zagrade koje govore da je ovo funkcijaprint()— 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:
- Python pročita definiciju funkcije
- Dolazi do poziva
pozdravi() - Program „ulazi“ u funkciju
- Izvršava se telo funkcije
- 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.pymath.pyrandom.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.pyfunkcije_uvod.pyvezba_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.
-
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.
-
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) -
Provera parnosti
Napiši funkciju
je_paran(n)koja vraćaTrueako je broj paran, inačeFalse.def je_paran(n): pass print(je_paran(4)) # True print(je_paran(7)) # False -
Faktorijal (iterativno)
Funkcija
fakt(n)računa n!. Počni iterativnim pristupom (petlja).def fakt(n): # pretpostavi n >= 0 pass print(fakt(5)) # 120Bonus: pokušaj i rekurzivnu verziju ako si spreman/la za izazov.
-
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 -
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")) -
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 -
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")) -
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) -
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 iliNoneako 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.
-
Ispis poruke
Napiši funkciju koja ispisuje poruku: "Učim funkcije u Pythonu". Funkciju pozovi dva puta.
-
Funkcija sa jednim parametrom
Napiši funkciju koja prima ime učenika i ispisuje poruku: "Učenik <ime> je uspešno pokrenuo funkciju."
-
Sabiranje brojeva
Napiši funkciju koja prima dva cela broja i vraća njihov zbir. U glavnom programu ispiši rezultat.
-
Funkcija sa proverom uslova
Napiši funkciju koja prima jedan broj i vraća poruku "Pozitivan", "Negativan" ili "Nula".
Uputstvo: koristi
if,elifielseunutar funkcije i vrati tekstualnu vrednost. -
Takmičarski nivo — ponavljanje poziva funkcije
Napiši funkciju koja prima jedan ceo broj
ni ispisuje sve brojeve od 1 don, 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.