Függvényparaméterek a Pythonban

Miért fontosak a függvényparaméterek?

A függvényparaméterek lehetővé teszik, hogy rugalmas és újrafelhasználható kódot írjunk. A Python különböző paramétertípusai segítenek abban, hogy függvényeink alkalmazkodni tudjanak különböző helyzetekhez.

def koszont(nev):
    """Egyszerű köszöntő függvény egy paraméterrel"""
    return f"Szia {nev}!"

# Használat
print(koszont("Anna"))  # Kiírja: Szia Anna!

Mit fogunk tanulni?

Pozicionális és opcionális paraméterek
*args - változó számú pozicionális paraméter
**kwargs - változó számú kulcsszavas paraméter

Pozicionális és Opcionális Paraméterek

Pozicionális Paraméterek

A pozicionális paramétereket sorrendben kell megadni a függvényhíváskor. Ezek kötelező paraméterek, amelyeket mindenképpen meg kell adnunk.

def osszeadas(a, b):
    """Két szám összeadása pozicionális paraméterekkel"""
    return a + b

# Használat
print(osszeadas(5, 3))  # Eredmény: 8
+

Opcionális Paraméterek

Az opcionális paramétereknek alapértelmezett értékük van, így nem kötelező őket megadni a függvényhíváskor.

def koszont(nev, udvozles="Szia"):
    """Köszöntés opcionális üdvözlő szöveggel"""
    return f"{udvozles}, {nev}!"

# Használat
print(koszont("Anna"))          # Eredmény: Szia, Anna!
print(koszont("Béla", "Hello")) # Eredmény: Hello, Béla!

*args - Változó Számú Pozicionális Paraméter

Mi az a *args?

A *args lehetővé teszi tetszőleges számú pozicionális paraméter átadását egy függvénynek. A Python egy tuple-be gyűjti ezeket az értékeket.

def osszegzes(*args):
    """Tetszőleges számú érték összeadása"""
    return sum(args)

# Használat
print(osszegzes(1, 2, 3))       # Eredmény: 6
print(osszegzes(1, 2, 3, 4, 5)) # Eredmény: 15

Hogyan működik?

args tuple: ( )

Példa: Átlagszámítás

Az alábbi függvény tetszőleges számú érték átlagát számolja ki:

def atlag(*args):
    """Tetszőleges számú érték átlaga"""
    if not args:
        return 0
    return sum(args) / len(args)

# Használat
print(atlag(70, 80, 90))     # Eredmény: 80.0
print(atlag(1, 2, 3, 4, 5))  # Eredmény: 3.0

**kwargs - Kulcs-Érték Párok

Mi az a **kwargs?

A **kwargs lehetővé teszi tetszőleges számú kulcs-érték pár átadását egy függvénynek. A Python egy dictionary-be (szótárba) gyűjti ezeket az értékeket.

def szemely_info(**kwargs):
    """Személyes információk megjelenítése"""
    return "\n".join(f"{key}: {value}" for key, value in kwargs.items())

# Használat
print(szemely_info(nev="Anna", kor=25, varos="Budapest"))
print(szemely_info(nev="Béla", foglalkozas="programozó"))

Készíts személyi adatlapot:

:

Hogyan működik?

kwargs dictionary:
{ }

Gyakorlati példa: Termék konfigurátor

A következő példában egy terméket konfigurálhatunk különböző tulajdonságokkal:

def termek_konfig(**kwargs):
    """Termék konfigurálása különböző tulajdonságokkal"""
    alap = {
        'szin': 'fehér',
        'meret': 'M',
        'anyag': 'pamut'
    }
    alap.update(kwargs)  # Frissítjük az alapértékeket
    return alap

# Használat
print(termek_konfig(szin="kék", meret="L"))
print(termek_konfig(anyag="selyem", extra_zseb=True))

Termék konfigurátor:

Kombinált Paraméterek

Minden együtt

Az alábbi példában láthatjuk, hogyan használhatjuk együtt a különböző típusú paramétereket:

def rendezes(sorrend="növekvő", *szamok, **beallitasok):
    """
    Számok rendezése különböző beállításokkal
    - sorrend: növekvő vagy csökkenő (opcionális)
    - *szamok: a rendezendő számok
    - **beallitasok: extra beállítások (pl. abszolút=True)
    """
    szamlista = list(szamok)

    # Abszolút érték szerinti rendezés
    if beallitasok.get('abszolut', False):
        szamlista.sort(key=abs)
    else:
        szamlista.sort()

    # Sorrend beállítása
    if sorrend == "csökkenő":
        szamlista.reverse()

    return szamlista

# Példák:
print(rendezes(5, 1, -3, 2))                    # [1, 2, -3, 5]
print(rendezes("csökkenő", 5, 1, -3, 2))        # [5, 2, -3, 1]
print(rendezes(5, 1, -3, 2, abszolut=True))     # [1, 2, -3, 5]

Próbáld ki az összes paramétertípust egyszerre:

A paraméterek feldolgozása:

Opcionális
sorrend="növekvő"
*args
(5, 1, -3, 2)
**kwargs
{"abszolut": false}