Lekcija 10: Funkcije u Pythonu
Funkcije u Pythonu
Modularizacija i ponovna upotreba koda
Čestitam na dolasku do desete lekcije! Do sada ste naučili kako da čuvate i manipulišete podacima, donosite odluke i ponavljate radnje. Sada je vreme da naučite jedan od najvažnijih koncepata u programiranju: funkcije u Pythonu.
Funkcije su blokovi koda koji obavljaju određeni zadatak i mogu se ponovo koristiti. Zamislite ih kao male „mašine“ unutar vašeg programa. Svaka mašina ima svoju svrhu: jedna može da sabira brojeve, druga da ispisuje pozdravnu poruku, treća da izračunava porez. Kada vam zatreba taj zadatak, samo pozovete tu „mašinu“ umesto da ponovo pišete ceo kod.
1. Zašto su funkcije važne?
Funkcije donose mnoge prednosti u programiranju:
- Modularnost: Pomažu vam da podelite veliki program na manje, lakše upravljive delove. Svaka funkcija rešava jedan specifičan problem.
- Ponovna upotreba koda (Reusability): Kada jednom napišete funkciju, možete je pozivati bilo gde u programu (ili čak u drugim programima), umesto da stalno kopirate i lepite isti kod.
- Lakše održavanje: Ako se pojavi greška u delu koda koji je u funkciji, znate tačno gde da tražite i ispravite.
- Čitljivost koda: Program sa dobro definisanim funkcijama je mnogo lakši za čitanje i razumevanje, jer je jasno vidljivo šta svaki deo programa radi.
2. Definisanje funkcija (def ključna reč)
Funkciju u Pythonu definišete pomoću ključne reči def (od „define“ – definisati), nakon čega sledi ime funkcije, zagrade () i dvotačka :. Kod koji pripada funkciji mora biti uvučen (indentiran).
Struktura definicije funkcije:
def ime_funkcije():
# Kod koji funkcija izvršava
# …
Primer jednostavne funkcije:
# Definisanje funkcije ‘pozdrav’
def pozdrav():
print(„Zdravo, svete!“)
print(„Dobrodošli u svet funkcija u Pythonu!“)
# Pozivanje funkcije
pozdrav() # Izvršava kod unutar funkcije ‘pozdrav’
pozdrav() # Funkciju možete pozvati više puta
3. Funkcije sa parametrima (Argumenti)
Često želite da vaša funkcija radi nešto slično, ali sa različitim podacima svaki put kada je pozovete. Za to koristimo parametre. Parametri su „promenljive“ koje definišete u zagradama prilikom definisanja funkcije. Kada pozivate funkciju, vrednosti koje joj prosledite se zovu argumenti.
Struktura funkcije sa parametrima:
def ime_funkcije(parametar1, parametar2):
# Kod koji koristi parametar1 i parametar2
# …
Primer funkcije sa parametrima:
# Funkcija koja pozdravlja osobu po imenu
def pozdravi_osobu(ime):
print(f“Zdravo, {ime}!“)
# Pozivanje funkcije sa različitim argumentima
pozdravi_osobu(„Ana“)
pozdravi_osobu(„Marko“)
# Funkcija za sabiranje dva broja
def saberi(broj1, broj2):
zbir = broj1 + broj2
print(f“Zbir brojeva {broj1} i {broj2} je: {zbir}“)
saberi(5, 3) # Poziv sa argumentima 5 i 3
saberi(10, 20) # Poziv sa argumentima 10 i 20
4. Funkcije koje vraćaju vrednosti (return ključna reč)
Neke funkcije samo obavljaju zadatak (npr. ispisuju nešto), dok druge treba da vrate rezultat nazad programu koji ih je pozvao. Za to koristimo ključnu reč return. Kada funkcija naiđe na return izjavu, ona odmah prestaje sa radom i vraća navedenu vrednost.
Struktura funkcije sa povratnom vrednošću:
def ime_funkcije(parametri):
# Kod za obavljanje zadatka
rezultat = # izračunavanje rezultata
return rezultat # Vraćanje rezultata
Primer funkcije koja vraća vrednost:
# Funkcija koja vraća zbir dva broja
def saberi_i_vrati(broj_a, broj_b):
zbir = broj_a + broj_b
return zbir # Vraćamo izračunatu vrednost
# Pozivamo funkciju i čuvamo njen rezultat u promenljivu
rezultat_sabiranja = saberi_i_vrati(7, 8)
print(f“Rezultat sabiranja je: {rezultat_sabiranja}“) # Ispisuje 15
# Možemo direktno koristiti rezultat funkcije
if saberi_i_vrati(10, 5) > 12:
print(„Zbir je veći od 12.“)
# Funkcija za proveru punoletstva
def proveri_punoletstvo(godine):
if godine >= 18:
return True
else:
return False
da_li_je_punoletan = proveri_punoletstvo(20)
print(f“Da li je osoba punoletna? {da_li_je_punoletan}“)
da_li_je_maloletan = proveri_punoletstvo(16)
print(f“Da li je osoba maloletna? {da_li_je_maloletan}“)
Praktičan primer: Kalkulator sa funkcijama
Hajde da unapredimo naš kalkulator iz Lekcije 5 koristeći funkcije. Svaka operacija (sabiranje, oduzimanje, množenje, deljenje) biće posebna funkcija.
# Program: Kalkulator sa funkcijama
def saberi(a, b):
return a + b
def oduzmi(a, b):
return a – b
def pomnozi(a, b):
return a * b
def podeli(a, b):
if b == 0:
return „Greška: Deljenje sa nulom!“
else:
return a / b
print(„Jednostavan kalkulator sa funkcijama!“)
while True:
print(„\nOdaberite operaciju:“)
print(„1. Sabiranje“)
print(„2. Oduzimanje“)
print(„3. Množenje“)
print(„4. Deljenje“)
print(„5. Izlaz“)
izbor = input(„Unesite broj opcije: „)
if izbor == ‘5’:
print(„Izlazim iz kalkulatora. Doviđenja!“)
break
if izbor in (‘1’, ‘2’, ‘3’, ‘4’):
try:
broj1 = float(input(„Unesite prvi broj: „))
broj2 = float(input(„Unesite drugi broj: „))
except ValueError:
print(„Nevalidan unos. Molimo unesite brojeve.“)
continue # Vrati se na početak petlje
if izbor == ‘1’:
rezultat = saberi(broj1, broj2)
print(f“Rezultat sabiranja: {rezultat}“)
elif izbor == ‘2’:
rezultat = oduzmi(broj1, broj2)
print(f“Rezultat oduzimanja: {rezultat}“)
elif izbor == ‘3’:
rezultat = pomnozi(broj1, broj2)
print(f“Rezultat množenja: {rezultat}“)
elif izbor == ‘4’:
rezultat = podeli(broj1, broj2)
print(f“Rezultat deljenja: {rezultat}“)
else:
print(„Nevalidna opcija. Molimo pokušajte ponovo.“)
Zadatak za vežbu: Pokrenite ovaj program. Obratite pažnju kako su operacije izdvojene u zasebne funkcije, čineći glavni program čitljivijim i lakšim za razumevanje.
Pitanja i odgovori (FAQ)
P: Koja je razlika između parametra i argumenta?
O: Parametar je naziv promenljive koja se navodi u definiciji funkcije (npr. ime u def pozdravi_osobu(ime):). Argument je stvarna vrednost koju prosleđujete funkciji kada je pozivate (npr. „Ana“ kada pozovete pozdravi_osobu(„Ana“)).
P: Šta se dešava ako funkcija ne koristi return?
O: Ako funkcija ne sadrži return izjavu (ili ako je return bez vrednosti), ona implicitno vraća specijalnu vrednost None. None u Pythonu predstavlja odsustvo vrednosti.
P: Da li moram da koristim print() unutar funkcije?
O: Ne. Funkcija može da izračuna nešto i vrati rezultat (return) bez ikakvog ispisivanja na ekran. U većini slučajeva je bolje da funkcija vraća vrednost, a da se print() koristi izvan funkcije, jer to čini funkciju fleksibilnijom i ponovo upotrebljivom.
P: Mogu li funkcije pozivati druge funkcije?
O: Apsolutno! To je vrlo česta praksa i suština modularnog programiranja. Funkcija može pozvati jednu ili više drugih funkcija da bi obavila svoj zadatak.
P: Kako da Python zna da je nešto funkcija?
O: Python zna da je nešto funkcija po ključnoj reči def kojom počinje definicija, po nazivu funkcije i zagradama () koje slede. Uvučeni blok koda ispod def linije je telo funkcije.
Relevantni linkovi
- W3Schools – Python Functions (engleski): w3schools.com/python/python_functions.asp
- Real Python – Defining Your Own Python Functions (engleski): realpython.com/defining-your-own-python-functions/
- Zvanična Python dokumentacija – Defining Functions (engleski): docs.python.org/3/tutorial/controlflow.html#defining-functions
Čestitamo! Sada ste naučili kako da pišete i koristite funkcije, što je veliki korak ka pisanju organizovanijeg, čitljivijeg i efikasnijeg koda. U sledećoj lekciji ćemo se upoznati sa modulima i paketima, koji nam omogućavaju da koristimo već napisan kod i da delimo svoj kod sa drugima!

