Naredba return

9.8 Naredba return 

Problem: Upomoć, moja komunikacija sa funkcijama je skroz pobrljavila! Vidi ovo:
>>> def mojbroj(n): 
...     print('Moj broj je', n,'.') 
... 
>>> mojbroj(5) 
Moj broj je 5 . 
>>> print(mojbroj(5)) 
Moj broj je 5 . 
None 
>>> 
Kakva je ovo None fora? Pa funkcija ima neku vrednost koju sam joj prosledio?
Odgovor: Do sada sam te učio kako da komuniciraš sa funkcijom kroz njena „vrata“ (argumente). No, na taj način mi (glavni program) šaljemo vrednosti u funkciju. Takođe, sve funkcije koje smo pisali do sada su nam služile samo za neku obradu, a potom i prikaz rezultata pomoću ugrađene funkcije print(). Šta ako mi ne želimo da podaci budu prikazani, već želimo da naša funkcija samo obradi te podatke, pa da nam vrati rezultat, a mi ćemo kasnije da radimo neku drugu obradu sa njima? Znači, nama funkcija treba da vrati neki podatak, sa kojim mi dalje radimo.
Ako je nejasno, seti se većine funkcija koje smo već koristili, kao što su input(), len() itd... Ove funkcije bi bile prilično beskorisne kada bi – samo prikazivale rezultat svog rada! Umesto toga, one nam vraćaju neku vrednost, sa kojom mi radimo šta nam je volja.
Kako mi da nateramo funkciju da nam nešto vrati?
Za divno čudo, kao i sve ostalo u Pythonu, ispostavlja se da je to – jako prosta stvar!
Komanda return se koristi da programu vratimo neku vrednost iz funkcije, ili da prekinemo izvršavanje funkcije, tj Python kada naiđe na return pogleda ima li šta za vraćanje, ako ima to vrati i prekine izvršavanje funkcije, ako nema – samo prekine funkciju i nastavlja dalje sa programom. Na taj načinmi možemo da vraćamo neku vrednost (ili više vrednosti) iz funkcije. 
Na primer: 
>>> def maksimum(*brojevi): 
...     maks = 0 
...     for i in brojevi: 
...             if i > maks: 
...                     maks = i 
...     return maks 
... 
>>> maksimum(10, 20, 30, 14, -5, 25, 1548, -1585858, 12580) 
12580 
>>> 
Kreirali smo funkciju kojoj prosleđujemo neki niz brojeva, i ona nam vraća najveći od njih.
Možemo imati i više mogućih vrednosti koje želimo da vratimo iz funkcije, na primer, možda da upoređujemo dva broja?
>>> def uporedi(a, b): 
...     if a > b: 
...             return a 
...     if a == b: 
...             return 'jednako' 
...     else: 
...             return b 
... 
>>> uporedi(6, 8) 
8 
>>> uporedi(8, 8) 
'jednako' 
>>> uporedi(10, 8) 
10 
>>> uporedi('a', 'a') 
'jednako' 
>>> 
Sada smo kreirali funkciju, koja nam vraća različite vrednosti, za različite vrednosti prosleđenih argumenata. I, obrati pažnju da više ne moram da brinem šta prosleđujem funkciji! Kada sam joj prosledio string, ona se isto ponašala kao i kada joj prosleđujem broj! Ovakva praksa je prilično korisna, jer sada ovako definisanu funkciju mogu koristiti i u najneočekivanijim situacijama!
I za kraj, opet mala napomena: imaj na umu da return komanda koja je napisana kao da ne vraća nikakvu vrednost (napisana je samostalno, samo return) ipak vraća nešto – i to, već poznatu vrednost None. Znači, sve ti je jedno, da li ćeš napisati return None ili samo return. Ako ti je nejasno ovo, None je poseban tip podataka u Python-u koji predstavlja ništa (nešto nema nikakvu vrednosti - ili, drugim rečima, ništa). Često se koristi da bi u startu označili neku promenljivu kao da nema nikakvu vrednost (znači da ima vrednost None), ali u toku rada nam je potrebna, pa joj dodeljujemo neku konkretnu vrednost. 
I još jedna, prilično značajna napomena:
Svaka funkcija čak i ako nisi naveo nigde komandu return ipak sadrži return None na kraju, osim, naravno ako si naznačio svoju return komandu. I to ti se upravo i desilo, sa problemom na početku ovog dela tutorijala. Ali ponoviću još jedanput:
>>> def nista(): 
...     pass 
... 
>>> nista() 
>>> print(nista()) 
None 
>>> 
Vidimo da funkcija koja ne radi ništa (i po nekoj logici, ne bi trebalo da vrati išta) ipak vraća vrednost – None, koja predstavlja to – ništa.
I za kraj, funkcija maksimum koju sam ti pokazao ovde je – uzalud pisana jer, opet, postoji ugrađena funkcija max() koja radi isto to. Python olakšava život, kako ne bi morali da lupamo glavu oko raznih sitnica na taj način što imamo gomilu već gotovih rešenja, što nam štedi vreme potrebno za razmišljanje i pisanje rešenja. Takođe imamo i min() funkciju koja nam vraća minimum vrednosti:
>>> min(10, 20, 458, -458, -45555) 
-45555 
>>> max(10, 20, 458, -458, -45555) 
458 
>>> 

9.7 Parametri koji se
mogu pozivati samo
pomoću ključnih reči
Indeks 9.9 DocStrings

Primjedbe

Popularno

Kako televizija štetno utiče na Vaše zdravlje finansije?

Da li je TV kviz Slagalica "prevara"?

Tu je novi Qt creator 4.4.0!

Kada prijatelji odlaze

Microsoft objavio - nova verzija Windowsa stiže...

Opet su se pojavili lažni kuponi brenda "IDEA" na društvenim mrežama

Najgore obrade velikih rock hitova

Sitnije promene na blogu...

Poslednji pozdrav izgubljenom vremenu

Ne, Marlboro ne deli besplatne cigarete!