Bevezetés a Python Függvényekhez
Mi az a függvény?
A függvény olyan újrafelhasználható kódblokk, amely egy specifikus feladatot hajt végre. A függvények segítségével:
Újrafelhasználható kód
Nem kell ugyanazt a kódot többször megírni
Modularitás
Komplex feladatok kisebb részekre bontása
Karbantarthatóság
Könnyebb módosítani és hibát keresni
Egy egyszerű függvény
Nézzük meg, hogyan néz ki egy alapvető Python függvény:
def koszont():
"""Ez egy egyszerű üdvözlő függvény"""
print("Üdvözöllek a Python függvények világában!")
# A függvény meghívása
koszont()
A függvény részei:
A függvény definíció kulcsszava
A függvény neve
Paraméter lista (itt üres)
A függvény utasításai
Próbáld ki!
Függvények Alapjai
A függvények szintaxisa
A Python függvényeket a def
kulcsszóval definiáljuk. Nézzük meg a függvények alapvető felépítését:
def függvény_neve(paraméter1, paraméter2):
"""Dokumentációs string (docstring) - a függvény leírása"""
# A függvény törzse
# Itt vannak a végrehajtandó utasítások
eredmény = paraméter1 + paraméter2
return eredmény # Visszatérési érték
A függvény fő részei:
Kulcsszó, ami jelzi, hogy függvényt definálunk
A függvény egyedi azonosítója, amivel később meghívhatjuk
A függvénynek átadott értékek, vesszővel elválasztva
A függvény fejlécének vége
A függvény működésének dokumentációja (opcionális)
A végrehajtandó utasítások (behúzással jelölve)
A függvény által visszaadott érték (opcionális)
Függvény használata
A függvényeket a nevük és zárójelek segítségével hívhatjuk meg. A zárójelekben adjuk át a szükséges paramétereket.
# Egyszerű függvény definíció
def osszeadas(a, b):
return a + b
# Függvény használata (meghívása)
eredmeny = osszeadas(5, 3)
print(f"5 + 3 = {eredmeny}") # Kiírja: 5 + 3 = 8
# Másik példa: szövegek kezelése
def koszont(nev):
return f"Szia {nev}!"
# Függvény meghívása stringgel
udvozles = koszont("Anna")
print(udvozles) # Kiírja: Szia Anna!
Próbáld ki!
Függvények Definiálása
Paraméterek használata
A függvények paraméterekkel való definiálása lehetővé teszi, hogy különböző értékekkel használjuk ugyanazt a függvényt:
# Egyszerű paraméterek
def szoroz(a, b):
return a * b
# Alapértelmezett értékek
def hatványoz(alap, kitevo=2):
return alap ** kitevo
# Paraméterek név szerint
def szemely_info(nev, kor, varos="Budapest"):
return f"{nev} ({kor} éves) - {varos}"
Próbáld ki a különböző paraméterezéseket:
Függvény dokumentálása
A jól dokumentált függvények könnyebben használhatók és karbantarthatók:
def korterfogat(sugar, magassag):
"""
Kiszámolja egy kör alapú henger térfogatát.
Paraméterek:
sugar (float): A kör sugara
magassag (float): A henger magassága
Visszatérési érték:
float: A henger térfogata
"""
pi = 3.14159
alapterulet = pi * sugar * sugar
terfogat = alapterulet * magassag
return terfogat
Henger térfogat számítása:
Visszatérési Értékek
A return utasítás
A return utasítás két fontos célt szolgál:
- Értéket ad vissza a függvényből
- Azonnal kilép a függvényből (akkor is, ha még lenne utána kód)
# Egyszerű visszatérési érték
def negyzet(szam):
return szam * szam # Visszaadja a szám négyzetét
# Több lehetséges visszatérési érték
def oszthato(szam, oszto):
if szam % oszto == 0:
return True
return False
# Korai kilépés return-nel
def osztas(a, b):
if b == 0:
return "Nullával nem lehet osztani!"
return a / b
Próbáld ki!
Többszörös visszatérési érték
A Python lehetővé teszi több érték egyidejű visszaadását tuple formájában:
# Több érték visszaadása
def koordinatak(x, y):
tavolsag = (x ** 2 + y ** 2) ** 0.5 # Távolság az origótól
szog = math.atan2(y, x) # Szög az x tengellyel
return tavolsag, szog
# Értékek kibontása
tav, szog = koordinatak(3, 4)
# Lista visszaadása
def statisztika(szamok):
minimum = min(szamok)
maximum = max(szamok)
atlag = sum(szamok) / len(szamok)
return [minimum, maximum, atlag]
Többszörös visszatérés kipróbálása
Lokális és Globális Változók
Változók láthatósága
A Python függvényekben használt változók kétfélék lehetnek:
- Lokális változók: Csak a függvényen belül érhetők el
- Globális változók: A program bármely részéből elérhetők
# Globális változó
szamlalo = 0
def novel():
global szamlalo # Jelezzük, hogy a globális változót használjuk
szamlalo += 1
return szamlalo
def lokalis_pelda():
# Ez egy lokális változó
x = 10
return x
# A lokális x itt már nem elérhető
# print(x) # Ez hibát okozna!
print(novel()) # 1
print(novel()) # 2
print(szamlalo) # 2 - globális változó mindenhol elérhető
Számláló példa:
Változók árnyékolása
Ha egy függvényben ugyanolyan nevű változót használunk, mint egy globális változó, akkor az a függvényen belül egy új, lokális változót hoz létre:
# Globális változó
nev = "Globális"
def pelda():
nev = "Lokális" # Új lokális változó, nem módosítja a globálist
print(f"Függvényen belül: {nev}")
pelda() # Kiírja: Függvényen belül: Lokális
print(f"Függvényen kívül: {nev}") # Kiírja: Függvényen kívül: Globális
Próbáld ki a változó árnyékolást:
Függvények Dokumentálása
A docstring használata
A docstring (documentation string) egy többsoros szöveges dokumentáció, amely leírja a függvény működését, paramétereit és visszatérési értékét.
def teglalap_terulet(szelesseg, magassag):
"""
Kiszámolja egy téglalap területét.
Paraméterek:
szelesseg (float): A téglalap szélessége
magassag (float): A téglalap magassága
Visszatérési érték:
float: A téglalap területe
"""
return szelesseg * magassag
# A dokumentáció megtekintése
help(teglalap_terulet)
# vagy
print(teglalap_terulet.__doc__)
Dokumentáció generátor:
Dokumentáció példák
Nézzünk néhány gyakori esetet a függvények dokumentálására:
1. Egyszerű függvény
def koszont(nev):
"""Egyszerű üdvözlő üzenet generálása.
Args:
nev (str): A köszöntendő személy neve
Returns:
str: Az üdvözlő üzenet
"""
return f"Szia {nev}!"
2. Összetett függvény
def osztalyzat_szamitas(pontszam, max_pont=100):
"""
Kiszámolja az érdemjegyet a pontszám alapján.
Args:
pontszam (int): Elért pontszám
max_pont (int, optional): Maximális pontszám. Alapértelmezett: 100
Returns:
int: Érdemjegy (1-5)
Raises:
ValueError: Ha a pontszám negatív vagy nagyobb, mint a maximum
"""
if pontszam < 0 or pontszam > max_pont:
raise ValueError("Érvénytelen pontszám!")
szazalek = (pontszam / max_pont) * 100
if szazalek < 50: return 1
if szazalek < 60: return 2
if szazalek < 70: return 3
if szazalek < 85: return 4
return 5
Próbáld ki a dokumentált függvényeket:
Gyakorló Feladatok
Tudáspróba
Az alábbi feladatok segítenek a tanult függvénykezelési technikák gyakorlásában. Minden feladathoz tartozik egy leírás és egy interaktív felület a megoldás kipróbálásához.
1. Feladat: Egyszerű függvény írása
Írj egy függvényt, amely két számot kap paraméterként, és visszaadja a két szám közül a nagyobbat! Próbáld megoldani elsőként, majd hasonlítsd össze a megoldásoddal.
def nagyobb(a, b):
"""
Visszaadja két szám közül a nagyobbat.
Args:
a (float): Első szám
b (float): Második szám
Returns:
float: A nagyobb szám
"""
return a if a > b else b
Próbáld ki!
2. Feladat: Alapértelmezett paraméter használata
Készíts egy függvényt, amely kiszámítja egy kör kerületét! A pi értéke legyen alapértelmezetten 3.14.
def kor_kerulet(sugar, pi=3.14):
"""
Kiszámítja egy kör kerületét.
Args:
sugar (float): A kör sugara
pi (float, optional): Pi értéke. Alapértelmezett: 3.14
Returns:
float: A kör kerülete
"""
return 2 * pi * sugar
Próbáld ki!
3. Feladat: Dokumentált függvény return értékkel
Írj egy függvényt, amely megkapja egy számot és visszaadja, hogy a szám prím-e vagy sem! A függvény legyen megfelelően dokumentálva!
def prim_e(szam):
"""
Ellenőrzi, hogy egy szám prím-e.
Args:
szam (int): A vizsgálandó szám
Returns:
bool: True ha a szám prím, False ha nem
Raises:
ValueError: Ha a szám kisebb mint 2
"""
if szam < 2:
raise ValueError("A szám nem lehet kisebb 2-nél!")
for i in range(2, int(szam ** 0.5) + 1):
if szam % i == 0:
return False
return True