Jak zdefiniować funkcję wewnątrz innej funkcji w Pythonie?

Python jest elastycznym językiem programowania, który oferuje szerokie możliwości w zakresie definicji funkcji, w tym definiowanie jednej funkcji wewnątrz drugiej. Takie podejście, znane jako zagnieżdżone funkcje, pozwala na tworzenie bardziej uporządkowanego i modularnego kodu. W tym artykule pokażemy, jak zdefiniować funkcję wewnątrz innej funkcji i jakie korzyści może to przynieść.

Kompletny przykład kodu z zagnieżdżonymi funkcjami

Załóżmy, że chcemy stworzyć funkcję, która pozwoli na wykonywanie różnych operacji arytmetycznych na podstawie przekazanego argumentu. Aby to osiągnąć, zdefiniujemy funkcję wewnętrzną odpowiedzialną za każdą operację wewnątrz głównej funkcji calculator.

# Definiowanie głównej funkcji kalkulatora
def calculator(operation):
    # Definiowanie funkcji wewnętrznej do dodawania
    def add(x, y):
        return x + y

    # Definiowanie funkcji wewnętrznej do odejmowania
    def subtract(x, y):
        return x - y

    # Wybór odpowiedniej funkcji na podstawie argumentu
    if operation == 'add':
        # Zwracanie funkcji bez jej wywoływania
        return add
    elif operation == 'subtract':
        return subtract

# Pobieranie funkcji dodawania z kalkulatora
add_function = calculator('add')
print("Wynik dodawania: ", add_function(2, 3))
# Wypisze: Wynik dodawania:  5

# Pobieranie funkcji odejmowania z kalkulatora
subtract_function = calculator('subtract')
print("Wynik odejmowania: ", subtract_function(5, 3))
# Wypisze: Wynik odejmowania:  2

Komentarze w kodzie wyjaśniają działanie poszczególnych części. Kluczowym aspektem jest tutaj możliwość zwrócenia funkcji jako wartości z innej funkcji, bez jej natychmiastowego wywoływania. Dzięki temu możemy dynamicznie decydować, którą operację chcemy wykonać.

Podsumowanie

Definiowanie funkcji wewnątrz innej funkcji w Pythonie umożliwia tworzenie bardziej zorganizowanego i czytelnego kodu, szczególnie w przypadku, gdy pewne funkcje są używane wyłącznie w obrębie innych funkcji. To podejście może również zwiększyć modularność kodu, umożliwiając łatwiejsze zarządzanie logiką aplikacji. Przykład pokazuje, jak możemy wykorzystać zagnieżdżone funkcje do budowania bardziej dynamicznych i konfigurowalnych rozwiązań, co jest jedną z zalet elastyczności Pythona.

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

Scroll to Top