Co to są *args i **kwargs i jak ich używamy?

W programowaniu w Pythonie często spotkamy się z pojęciami *args i **kwargs. Są to konwencje umożliwiające przekazywanie zmiennej liczby argumentów do funkcji. Ich zrozumienie jest kluczowe dla pisania elastycznego i efektywnego kodu.

Użycie *args

*args pozwala na przekazanie dowolnej liczby argumentów pozycyjnych do funkcji. Argumenty te są dostępne w funkcji jako krotka. Użycie *args jest przydatne, gdy nie wiemy z góry, ile argumentów zostanie przekazanych do naszej funkcji.

Przykład użycia *args:

def add_numbers(*args):
    # Sumowanie przekazanych argumentów
    sum = 0
    for number in args:
        sum += number
    return sum

# Wywołanie funkcji z różną liczbą argumentów
print(add_numbers(1, 2))  # Wynik: 3
print(add_numbers(1, 2, 3, 4))  # Wynik: 10

Użycie **kwargs

**kwargs pozwala na przekazanie dowolnej liczby argumentów nazwanych do funkcji. Argumenty te są dostępne w funkcji jako słownik. To rozwiązanie jest użyteczne, gdy chcemy przekazać do funkcji argumenty, które mają jasno określone nazwy.

Przykład użycia **kwargs:

def introduce_yourself(**kwargs):
    # Wypisywanie przekazanych argumentów nazwanych
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Wywołanie funkcji z różnymi argumentami nazwanymi
introduce_yourself(name="Jan", age=30, city="Warszawa")

Kombinowanie *args i **kwargs

Możemy także używać *args i **kwargs razem, aby umożliwić przekazanie dowolnej liczby argumentów pozycyjnych i nazwanych do funkcji.

Przykład:

def register_person(*args, **kwargs):
    # Wyświetlanie argumentów pozycyjnych
    print("Dane osobowe:")
    for arg in args:
        print(arg)
    # Wyświetlanie argumentów nazwanych
    print("\nDodatkowe informacje:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Wywołanie funkcji z argumentami pozycyjnymi i nazwanymi
register_person("Jan", "Kowalski", age=30, city="Warszawa")

Podsumowanie

*args i **kwargs to potężne narzędzia w Pythonie, umożliwiające tworzenie funkcji obsługujących zmienne liczby argumentów. Dzięki nim możemy pisać bardziej elastyczny i zrozumiały kod, który jest w stanie obsłużyć różne przypadki użycia bez potrzeby definiowania wielu podobnych funkcji. Zapamiętanie jak i kiedy ich używać, znacząco poprawi jakość naszego kodowania w Pythonie.

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