Pošalji koristan rezultat nazad kodu koji je pozvao funkciju.
Funkcija može da primi ulaznu vrednost, obavi posao i pošalje rezultat nazad. Time se zaokružuje osnovni tok: ulaz → funkcija → povratna vrednost. Kod koji je pozvao funkciju zatim može da odluči šta će uraditi sa tom vrednošću.
def double(number):
return number * 2
result = double(4)U double(4), 4 je argument. Tokom ovog poziva parametar number dobija 4. Telo računa 4 * 2, a return šalje 8 nazad kodu koji je pozvao funkciju. Poziv double(4) zato daje vrednost 8.
Čitaj result = double(4) u dva kratka koraka: double(4) → 8, zatim result = 8. Poziv funkcije koji vraća vrednost možeš u okolnom kodu posmatrati kao tu vrednost.
Prati vrednost kroz funkciju: argument → parametar → telo funkcije → povratna vrednost → kod koji je pozvao funkciju. Argument daje funkciji ulaznu vrednost; return šalje njen rezultat nazad na mesto gde se poziv dogodio.
def calculate_total(price, quantity):
return price * quantity
total = calculate_total(250, 3)
print(total)Pri pozivu calculate_total(250, 3), price = 250 i quantity = 3. Telo računa 250 * 3, što je 750. return 750 šalje tu vrednost nazad, pa je total = 750. Na kraju print(total) prikazuje 750.
def show_total(price, quantity):
print(price * quantity)
def calculate_total(price, quantity):
return price * quantityprint() prikazuje vrednost da bi je osoba videla. To je korisno, ali samo po sebi ne vraća izračunatu vrednost ostatku programa. return šalje vrednost kodu koji je pozvao funkciju, a on je može sačuvati, ispisati ili koristiti u drugom računanju.
result = double(4)
print(result)
print(double(4))
next_result = double(4) + 2Ista povratna vrednost može da se sačuva, prikaže direktno ili upotrebi u kasnijem jednostavnom izrazu. Ovde double(4) daje 8, pa next_result dobija 10.
def example():
print("Before")
return 10
print("After")Python ispisuje Before, zatim return 10 šalje 10 nazad i završava ovaj poziv funkcije example(). Kasniji print("After") se ne izvršava tokom tog poziva.
answer = double(5) + 1
# double(5) → 10
# answer = 10 + 1
# answer = 11Najpre u mislima zameni poziv vrednošću koju vraća. Zatim nastavi da čitaš kod koji je pozvao funkciju. Tako je lakše pratiti pozive funkcija bez doživljavanja kao tajanstvene posebne sintakse.
Praktičan kontrolni spisak za čitanje povratnih vrednosti
- Pronađi pozivKoja se funkcija poziva i koje argumente daje ovaj poziv?
- Poveži argumente sa parametrimaOdredi koje vrednosti parametri predstavljaju tokom ovog poziva.
- Prati teloPrati računanje ili druge instrukcije u telu funkcije.
- Pronađi povratnu vrednostKoji izraz ili vrednost
returnšalje nazad? - U mislima zameni pozivZameni poziv njegovom povratnom vrednošću, zatim nastavi da čitaš kod koji je pozvao funkciju.
Česte početničke greške
- Mešanje print() i return
print()prikazuje vrednost;returnšalje vrednost nazad kodu koji je pozvao funkciju, za kasniju logiku programa. - Izračunavanje vrednosti uz zaboravljeni returnAko je kasnijem kodu potreban rezultat, funkcija mora da ga vrati umesto da ga samo izračuna ili prikaže.
- Očekivanje da se kod posle return izvršiKada Python za ovaj poziv izvrši
return, poziv funkcije se završava i do kasnijih linija tela se ne stiže. - Zanemarivanje rezultata koji je potreban kasnijePozivanje funkcije može da obavi računanje, ali sačuvaj povratnu vrednost u promenljivoj kada je kodu koji je pozvao funkciju potrebna kasnije.
- Mišljenje da return trajno menja argument
returnšalje rezultat nazad iz trenutnog poziva. Ne zamenjuje trajno vrednost koja je prosleđena kao argument. - Nepostavljanje pitanja gde povratna vrednost odlaziPogledaj mesto poziva: da li se rezultat dodeljuje promenljivoj, ispisuje ili koristi u drugom izrazu?
