Co to jest domknięcie (closure) w Pythonie?

Domknięcie w Pythonie to technika programowania, która pozwala na przechowywanie wartości pomimo zakończenia działania otaczającej funkcji, w której te wartości zostały utworzone. Domknięcia umożliwiają “zapamiętywanie” stanu — przechowują wartości zmiennych, dzięki czemu można je wykorzystać później, nawet po zakończeniu życia zmiennej w swoim zakresie. To potężne narzędzie w programowaniu funkcjonalnym, które pozwala na większą elastyczność i wykorzystanie funkcji wyższego rzędu.

Przykład kodu z wyjaśnieniami

Poniższy przykład ilustruje, jak można stworzyć i wykorzystać domknięcie w Pythonie:

# Definicja funkcji zewnętrznej, która tworzy domknięcie
def zewnetrzna_funkcja(x):
    # Zmienna lokalna, która będzie "pamiętana" przez domknięcie
    zmienna_zewnetrzna = x

    # Definicja funkcji wewnętrznej, korzystającej ze zmiennej
    # z funkcji zewnętrznej
    def wewnetrzna_funkcja(y):
        # Użycie zmiennej z zewnętrznej funkcji
        return zmienna_zewnetrzna + y
    
    # Zwracanie funkcji wewnętrznej jako wartości
    return wewnetrzna_funkcja

# Utworzenie domknięcia przechowującego wartość zmienna_zewnetrzna
moje_domkniecie = zewnetrzna_funkcja(10)

# Wywołanie funkcji wewnętrznej z domknięcia z nowym argumentem
print(moje_domkniecie(5))  # Wynik: 15

Wyjaśnienie

  1. Funkcja zewnetrzna_funkcja(x) przyjmuje argument x i tworzy zmienną zmienna_zewnetrzna, która jest jej lokalna.
  2. Wewnątrz zewnetrzna_funkcja, definiowana jest funkcja wewnętrzna wewnetrzna_funkcja(y) korzystająca z zmienna_zewnetrzna. Dostęp do tej zmiennej jest możliwy, pomimo że wewnetrzna_funkcja zostanie wywołana poza swoim leksykalnym zakresem.
  3. zewnetrzna_funkcja zwraca wewnetrzna_funkcja bez jej wywoływania — zwraca samą funkcję, a nie jej wynik.
  4. Gdy zewnetrzna_funkcja jest wywoływana, tworzy domknięcie, czyli instancję wewnetrzna_funkcja wraz z otoczeniem, które “pamięta” wartość zmienna_zewnetrzna.
  5. Wywołując moje_domkniecie(5), używamy tej “zapamiętanej” wartości, dodając ją do nowego argumentu y.

Podsumowanie

Domknięcia w Pythonie pozwalają funkcjom wewnętrznym na dostęp do zmiennych zdefiniowanych w funkcjach zewnętrznych, nawet po ich wykonaniu. To mocne narzędzie umożliwia tworzenie bardziej modularnego i wyrafinowanego kodu, szczególnie w programowaniu funkcjonalnym i dekoratorach.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top