✦ Osnove Pythona Modul funkcija

Koncept 18 · Opseg promenljivih

Znajte gde je naziv dostupan.
Unutra i spolja nisu isto.

Functions create their own working area for names. Learn where Python can see a name during a function call and where that name is no longer available.

01 Uči02 Isprobaj03 Predvidi

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

Ime može da se koristi samo tamo gde ga Python vidi.

Koncepti 15–17 pratili su poziv funkcije od definicije, preko ulazne vrednosti, do return-a. Sada postavi pitanje gde su imena korišćena tokom tog poziva dostupna. Koristi ovaj početnički model: ime → gde je napravljeno → gde može da se koristi.

message = "Outside"

def show_message():
    message = "Inside"
    print(message)

show_message()
print(message)

Ovaj kod ispisuje Inside, zatim Outside. Dva pojavljivanja imena message ne znače automatski jednu istu promenljivu. Unutrašnje ime pripada show_message(); spoljašnje ime pripada okolnom programu.

Opseg odgovara na praktično pitanje: gde Python može da pronađe ovo ime? Ime napravljeno van funkcije pripada okolnom programu. Parametar ili ime napravljeno u telu funkcije pripada trenutnom pozivu te funkcije.

↳

Drži ove dve oblasti odvojeno: VAN FUNKCIJE: message = "Outside". POZIV show_message(): napravi i koristi lokalno ime message, zatim ga ispiši. KRAJ POZIVA: ta lokalna radna imena se više ne koriste. PONOVO VAN FUNKCIJE: print(message) koristi spoljašnje ime.

Parametri su takođe lokalna imena
def greet(name):
    message = "Hello " + name
    print(message)

greet("Ana")

Tokom ovog poziva, name označava "Ana", a message označava "Hello Ana". Koncept 16 je pokazao da argument daje vrednost parametru; to ime parametra dostupno je unutar ovog poziva funkcije.

Funkcija može da pročita spoljašnje ime
language = "Python"

def show_language():
    print(language)

show_language()

Ako Python ne pronađe ime napravljeno lokalno u funkciji, može da pročita odgovarajuće ime iz okolnog programa. Ovde ne postoji lokalno language, pa funkcija čita spoljašnju vrednost.

Isto ime unutra može da sakrije spoljašnje ime
color = "blue"

def change_color():
    color = "green"
    print(color)

change_color()
print(color)

Unutar funkcije color je "green". Van nje je i dalje "blue". Pravljenje lokalnog color ne zamenjuje automatski spoljašnje ime; dok Python radi unutar funkcije, lokalno ime sakriva spoljašnje ime koje se isto piše.

Lokalno ime nije automatski dostupno van funkcije
def make_label():
    label = "Local"
    print(label)

make_label()
# print(label) would not find this local name outside

label radi dok je Python unutar make_label(). Posle poziva, spoljašnji kod ne može jednostavno očekivati da radi print(label), jer Python tamo ne može da pronađe to lokalno ime.

Koristi return da pošalješ vrednost van funkcije
def make_label():
    label = "Python"
    return label

course_label = make_label()
print(course_label)

label je i dalje lokalno ime u make_label(). Koncept 17 daje koristan most: return šalje vrednost "Python" nazad, a spoljašnji kod je čuva pod svojim imenom, course_label. Misli ovako: lokalno ime → povratna vrednost → spoljašnje ime.

Svaki poziv dobija sopstvene lokalne vrednosti
def greet(name):
    message = "Hello " + name
    print(message)

greet("Ana")
greet("Marko")

U prvom pozivu, name je "Ana", a message je "Hello Ana". U drugom su to "Marko" i "Hello Marko". Nemoj parametar ili lokalnu promenljivu zamišljati kao jednu trajnu globalnu kutiju.

Praktičan kontrolni spisak za čitanje opsega promenljivih

  1. Odredi gde se nalaziš u programuDa li čitaš kod van funkcije ili unutar trenutnog poziva funkcije?
  2. Pronađi lokalno napravljena imenaDa li je ovo ime napravljeno u telu trenutne funkcije?
  3. Proveri da li postoji parametarDa li je ime parametar trenutnog poziva funkcije?
  4. Zatim potraži spolja ime koje može da se pročitaAko ne postoji lokalno ime, postoji li spoljašnje ime koje Python može da pročita?
  5. Vrati vrednost koja je potrebna van funkcijeKada je spoljašnjem kodu potrebna korisna vrednost, vrati je umesto da pokušavaš da dohvatiš lokalno ime.

Česte početničke greške

  • Pretpostavljanje da isto ime znači istu promenljivuIsto ime može pripadati okolnom programu i pozivu funkcije. Proveri gde je svako ime napravljeno.
  • Očekivanje da lokalna promenljiva postoji van funkcijeIme napravljeno u telu funkcije namenjeno je tom pozivu funkcije; spoljašnji kod ne može automatski da ga koristi posle završetka poziva.
  • Mišljenje da lokalna promena automatski menja spoljašnje imeDodeljivanje lokalnog imena koje se isto piše ne zamenjuje automatski spoljašnje ime.
  • Zaboravljanje da parametri pripadaju pozivu funkcijeArgument daje vrednost parametru tokom jednog poziva. Čitaj taj parametar kao ime dostupno unutar tog poziva.
  • Pokušaj korišćenja lokalnog imena van funkcije umesto vraćanja vrednostiAko je spoljašnjem kodu potreban rezultat, koristi return i sačuvaj povratnu vrednost pod spoljašnjim imenom.
  • Gubljenje iz vida kom opsegu ime pripadaZastani pri svakom korišćenju imena i zapitaj se da li Python trenutno radi unutar ili van funkcije.

Python radni prostor

Učitavanje Python okruženja…

Pre pokretanja koda predvidi oba izlaza. Zatim promeni unutrašnju vrednost, promeni spoljašnju vrednost i primeti koja promena utiče na koji print.

variable_scope.pyPython
IzlazČeka se Python
Okruženje pregledača se učitava. I dalje možeš da menjaš primer koda.

Pyodide pokreće Python u Web Worker-u pregledača. Zaustavlja se i ponovo pokreće ako se kod predugo izvršava. Izvršavanje u pregledaču nije potpuna bezbednosna granica; ne unosi tajne i ne oslanjaj se na njega za izolaciju nepouzdanog koda.

Šta će ovaj program ispisati?

Pročitaj definiciju funkcije i svaki poziv pre nego što izabereš odgovor.

color = "blue"

def change_color():
    color = "green"
    print(color)

change_color()
print(color)
Izaberi izlaz
Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.