Definirea si Apelarea Functiilor
Ce este o Functie?
O functie este un bloc de cod reutilizabil care efectueaza o sarcina specifica. Functiile ajuta la:
- Reutilizarea codului
- Organizarea programului
- Evitarea repetitiei (DRY - Don’t Repeat Yourself)
Definirea unei Functii
def nume_functie():
# corpul functiei
instructiuni
Exemplu simplu:
def salut():
print("Salut, lume!")
# Apelarea functiei
salut() # Afiseaza: Salut, lume!
salut() # Poate fi apelata de mai multe ori
Functii cu Parametri
Parametrii permit transmiterea de date catre functie:
def salut(nume):
print(f"Salut, {nume}!")
salut("Ana") # Salut, Ana!
salut("Bob") # Salut, Bob!
Mai multi parametri:
def prezentare(nume, varsta):
print(f"Ma numesc {nume} si am {varsta} ani")
prezentare("Ana", 20) # Ma numesc Ana si am 20 ani
Instructiunea return
return returneaza o valoare si termina functia:
def suma(a, b):
return a + b
rezultat = suma(3, 5)
print(rezultat) # 8
# Folosire directa
print(suma(10, 20)) # 30
Functii fara return:
Functiile fara return returneaza implicit None:
def afiseaza(mesaj):
print(mesaj)
# Nu are return
rezultat = afiseaza("Test")
print(rezultat) # None
Return multiplu:
def operatii(a, b):
suma = a + b
diferenta = a - b
produs = a * b
return suma, diferenta, produs # Returneaza tuple
s, d, p = operatii(10, 3)
print(s, d, p) # 13 7 30
# Sau ca tuple
rezultat = operatii(10, 3)
print(rezultat) # (13, 7, 30)
Return inainte de sfarsit:
def verifica_pozitiv(n):
if n <= 0:
return False # Iese imediat
# Cod care se executa doar pentru n > 0
return True
print(verifica_pozitiv(5)) # True
print(verifica_pozitiv(-3)) # False
Scopul Variabilelor
Variabile locale:
Variabilele definite in functie sunt locale - exista doar in functie:
def functie():
x = 10 # Variabila locala
print(x)
functie() # 10
# print(x) # NameError: name 'x' is not defined
Variabile globale:
Variabilele definite in afara functiilor sunt globale:
mesaj = "Salut" # Variabila globala
def afiseaza():
print(mesaj) # Poate citi variabila globala
afiseaza() # Salut
Modificarea variabilelor globale:
Pentru a modifica o variabila globala, foloseste global:
contor = 0
def incrementeaza():
global contor # Declara ca foloseste variabila globala
contor += 1
incrementeaza()
print(contor) # 1
incrementeaza()
print(contor) # 2
Nota: Evita folosirea excesiva a global - poate face codul greu de inteles.
Docstrings
Documenteaza functia cu un docstring:
def calculeaza_aria(lungime, latime):
"""
Calculeaza aria unui dreptunghi.
Args:
lungime: Lungimea dreptunghiului
latime: Latimea dreptunghiului
Returns:
Aria dreptunghiului (lungime * latime)
"""
return lungime * latime
# Vizualizare docstring
print(calculeaza_aria.__doc__)
help(calculeaza_aria)
Functii ca Obiecte
In Python, functiile sunt obiecte de prima clasa:
def salut():
return "Salut!"
# Atribuire la o variabila
f = salut
print(f()) # Salut!
# Transmitere ca argument
def executa(functie):
return functie()
print(executa(salut)) # Salut!
Pattern-uri Comune
Functie de validare:
def este_par(n):
return n % 2 == 0
print(este_par(4)) # True
print(este_par(7)) # False
Functie de transformare:
def celsius_la_fahrenheit(c):
return c * 9/5 + 32
print(celsius_la_fahrenheit(0)) # 32.0
print(celsius_la_fahrenheit(100)) # 212.0
Functie cu lista:
def suma_lista(numere):
total = 0
for n in numere:
total += n
return total
print(suma_lista([1, 2, 3, 4, 5])) # 15
Greseli Frecvente
1. Uitarea parantezelor la apel
def salut():
return "Salut!"
print(salut) # <function salut at 0x...>
print(salut()) # Salut!
2. Modificarea listelor in functii
def adauga_element(lista):
lista.append(4) # Modifica lista originala!
numere = [1, 2, 3]
adauga_element(numere)
print(numere) # [1, 2, 3, 4]
3. Return in bucla
def gaseste_par(numere):
for n in numere:
if n % 2 == 0:
return n # Returneaza PRIMUL par
return None
print(gaseste_par([1, 3, 4, 6])) # 4 (nu 6!)
4. Confuzie print vs return
def suma_print(a, b):
print(a + b) # Doar afiseaza
def suma_return(a, b):
return a + b # Returneaza valoarea
r1 = suma_print(2, 3) # Afiseaza 5, r1 = None
r2 = suma_return(2, 3) # r2 = 5
Puncte Cheie pentru Examen
defdefineste o functiereturnreturneaza valoare si termina functia- Functiile fara
returnreturneazaNone - Variabilele locale exista doar in functie
- Foloseste
globalpentru a modifica variabile globale - Functiile pot returna valori multiple (ca tuple)
- Parantezele
()sunt necesare la apel!
Intrebari de Verificare
- Ce returneaza o functie fara
return? - Care e diferenta intre parametru si argument?
- Ce se intampla cu variabilele locale dupa terminarea functiei?
- Cum documentezi o functie in Python?