🐍

Definirea si Apelarea Functiilor

Programare Python Intermediar 1 min citire 0 cuvinte

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

  • def defineste o functie
  • return returneaza valoare si termina functia
  • Functiile fara return returneaza None
  • Variabilele locale exista doar in functie
  • Foloseste global pentru a modifica variabile globale
  • Functiile pot returna valori multiple (ca tuple)
  • Parantezele () sunt necesare la apel!

Intrebari de Verificare

  1. Ce returneaza o functie fara return?
  2. Care e diferenta intre parametru si argument?
  3. Ce se intampla cu variabilele locale dupa terminarea functiei?
  4. Cum documentezi o functie in Python?

📚 Articole Corelate