Am văzut în cadrul episodului anterior cum putem transmite anumite valori unei funcții și funcția poate opera cu ele. Dar, este posibil și o comunicare în sens invers; în urma executării unei funcții, apelantul poate primi o valoare. Se spune că funcția returnează acea valoare.
În Python, spre deosebire de alte limbaje, nu trebuie să precizăm care este tipul valorii returnate de o funcție, aceasta putând returna orice valoare.
Să presupunem că vrem să determinăm ultima cifră a unui număr. Am putea scrie următoarea funcție:
1 2 |
def ultima(nr): return nr % 10 |
Vedem cuvântul return. Acesta este folosit în cadrul unei instrucțiuni care precizează valoarea care trebuie returnată de funcție. În cazul nostru returnăm ultima cifră, adică restul împărțirii la 10 a parametrului. Nu va funcționa corect pentru numere negative, dar acest lucru nu este relevant acum.
Putem face ce vrem cu valoarea returnată de o funcție. De exemplu, o putem atribui unei variabile. Funcția noastră ar putea fi apelată astfel:
1 |
c = ultima(2457) |
Valoarea variabilei c va fi 7. Probabil v-ați dat seama deja, funcția poate fi utilizată în cadrul expresiilor. De exemplu, am putea avea:
1 |
v = ultima(2457) + ultima(47) |
În această situație, valoarea variabilei v va fi 14.
Mai trebuie să precizăm faptul că, în Python, după executarea instrucțiunii care returnează o valoare, nicio altă instrucțiune din cadrul funcției nu se mai execută. Evident, avem excepții, dar nu sunt importante acum.
Putem avea mai multe instrucțiuni return în cadrul unei funcții, dacă ambele au șanse să fie apelate. De exemplu, următoarea funcție este corectă:
1 2 3 4 5 |
def paritate(nr): if nr % 2 == 0: return "Număr par" else: return "Număr impar" |
În funcție de valoarea variabilei nr, una dintre cele două instrucțiuni return se va executa.
Dar, următoarea variantă nu mai este corectă (cea de-a treia instrucțiune return nu are șanse să se execute):
1 2 3 4 5 6 |
def paritate(nr): if nr % 2 == 0: return "Număr par" else: return "Număr impar" return "Altceva" |
Dacă parametrul nu este par, nu este întâlnită nicio instrucțiune de returnare. În schimb, am putea scrie următoarea funcție:
1 2 3 4 5 6 |
def paritate(nr): if nr % 2 == 0: return "Număr par" else: nr += 1 return "Altceva" |
Cam ciudat codul, dar este valid. Până la urmă este întâlnită o instrucțiune de returnare, indiferent dacă parametrul este par sau nu.
Va urma
În cadrul episodului următor vom vedea în ce condiții putem folosi o variabilă. Vom vedea ce se întâmplă cu variabilele declarate în interiorul funcțiilor, precum și ce se întâmplă cu modificările aduse parametrilor funcțiilor.