Programiranje

Lekcija 10: Funkcije u Pythonu

Deseta lekcija iz serijala Python programiranja na TechFokus.rs posvećena je funkcijama – ključnom koraku ka modularizaciji i organizovanom pisanju koda. Objašnjene su osnovne strukture funkcija u Pythonu, uključujući definisanje pomoću def, rad sa parametrima, vraćanje vrednosti putem return, kao i razlika između parametara i argumenata. Lekcija je lokalizovana za početnike iz Srbije i regiona, sa primerima koji ilustruju upotrebu funkcija u kalkulatorima i svakodnevnim zadacima. Takođe su obrađene najbolje prakse za fleksibilnost i ponovnu upotrebu koda. Idealna je za đake, studente, hobiste i početnike u programiranju koji žele da unaprede svoje veštine u pisanju efikasnog i skalabilnog Python koda. Lekcija je deo šireg kurseva namenjenog domaćem tržištu.
Ova lekcija je deo serijala za učenje programiranja u Python jeziku na srpskom jeziku. Namenjena je početnicima iz Srbije, Bosne i Hercegovine, Crne Gore, Severne Makedonije i Hrvatske. Lekcija 10 objašnjava osnovne principe funkcija u Pythonu, uključujući definisanje funkcija pomoću def, korišćenje parametara i argumenata, vraćanje vrednosti pomoću return, kao i modularizaciju koda i ponovnu upotrebu. U tekstu su uključeni primeri, vežbe i uporedni prikaz sa kalkulator programom. Ključne fraze: Python funkcije, modularizacija koda, Python za početnike, edukacija programiranja.

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

Č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!

Nebojsa Kostić

Rođen 1976. Bavim se računarima I it poslovima više od 20 godina..Osnivač TechFokusa i tehnološki novinar sa preko 20 godina iskustva. Specijalizovan je za hardver, retro računare i tržišne analize.

Nebojsa Kostić has 423 posts and counting. See all posts by Nebojsa Kostić

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *