Conținut curs
Python Basic
Introducere în Python Instalarea Python și configurarea mediului de lucru Sintaxa și indentarea în Python Variabile și tipuri de date Operatori și expresii Structuri de control: if, elif, else Bucle: for și while Funcții Module și pachete Listele în Python Tuplurile în Python Seturile în Python Dicționarele în Python String-urile în Python Lucrul cu date și timp în Python Comprehensions în Python Gestionarea excepțiilor în Python (introducere) Închideri (closures) în Python (introducere) Lambda funcții în Python Încapsularea în Python (introducere) Testarea codului în Python (introducere)
0/21
Biblioteci și pachete
- Introducere în bibliotecile standard ale Python - Introducere în bibliotecile externe ale Python - Lucrul cu fișiere în Python (introducere)
0/3
Programare orientată pe obiect
- Introducere în programarea orientată pe obiect (OOP) - Ereditatea în Python (introducere)
0/2
Dezvoltare web cu Python
Introducere în dezvoltarea web cu Python
0/1
Python Basic
Despre lecție

În această lecție, vom discuta despre închideri (closures) în Python, ce sunt ele și vom oferi exemple de închideri.

Ce sunt închiderile?

O închidere (closure) în Python reprezintă o funcție înglobată (nested) care își amintește de starea mediului în care a fost definită, chiar și după ce mediul extern nu mai există. În alte cuvinte, o închidere permite unei funcții să „închidă” peste variabilele libere din domeniul său, făcându-le disponibile pentru execuția ulterioară.

Închiderile sunt utilizate în mod obișnuit pentru a crea funcții parametrizate sau funcții care generează alte funcții cu anumite comportamente.

Exemple de închideri

Exemplu 1: Generarea unei funcții de înmulțire

python
def creare_inmultire(factor):
    def inmultire(x):
        return x * factor
    return inmultire

# Crearea unei funcții de înmulțire cu 5
inmultire_cu_5 = creare_inmultire(5)

# Utilizarea funcției de înmulțire cu 5
rezultat = inmultire_cu_5(3)
print("Rezultatul înmulțirii 3 cu 5:", rezultat)

În acest exemplu, funcția creare_inmultire primește un argument factor și generează o funcție internă inmultire care înmulțește un număr cu acest factor. Funcția internă inmultire se închide peste variabila factor, reținându-i valoarea.

Exemplu 2: Contorizarea apelurilor unei funcții

python
def creare_contor():
    apeluri = 0

    def contor():
        nonlocal apeluri
        apeluri += 1
        return apeluri

    return contor

# Crearea unui contor
contor = creare_contor()

# Apelarea funcției contor de mai multe ori
print("Numărul de apeluri:", contor())  # 1
print("Numărul de apeluri:", contor())  # 2
print("Numărul de apeluri:", contor())  # 3

În acest exemplu, funcția creare_contor generează o funcție internă contor care se închide peste variabila apeluri. Funcția contor își amintește de numărul de apeluri efectuate, chiar și după ce funcția creare_contor și-a încheiat execuția.

Prin utilizarea închiderilor în Python, puteți crea funcții parametrizate, funcții care generează alte funcții și funcții care își amintesc de starea lor internă, oferind un nivel suplimentar de flexibilitate și putere în programare.