Generátor
A generátor egy olyan funkcionális programozási eszköz, amely lehetővé teszi az adatok sorozatos generálását és feldolgozását. A generátorok segítségével könnyedén létrehozhatunk olyan iterátorokat, amelyek folyamatosan adnak vissza értékeket, anélkül hogy az összes értéket előre generálnánk.
A generátorok használata nagyon hatékony lehet, különösen akkor, ha nagy adathalmazokkal dolgozunk, vagy olyan esetekben, amikor csak egy részletét szeretnénk feldolgozni az adatoknak. A generátorok segítségével lazán tudunk iterálni az adatokon, és csak akkor generáljuk az új értékeket, amikor szükség van rájuk.
A generátorokat Pythonban a yield
kulcsszóval definiáljuk. A yield
kulcsszóval jelöljük meg a generátor által visszaadott értéket, majd a generátor folytatódik ott, ahol abbahagyta az utolsó yield
után.
Például, vegyük a következő generátor függvényt, amely a Fibonacci sorozat első n
elemét generálja:
„`python
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
„`
Ez a generátor függvény minden iterációban visszaadja az aktuális Fibonacci számot, majd folytatja a számítást a következő Fibonacci számmal. A generátor használatakor csak annyi Fibonacci számot generálunk, amennyire szükségünk van.
A generátorokat könnyedén tudjuk kombinálni más generátorokkal vagy iterátorokkal. Például, a következő generátor függvény egy végtelen számok sorozatát generálja:
„`python
def infinite_numbers():
i = 0
while True:
yield i
i += 1
„`
Ez a generátor függvény folyamatosan generálja a számokat 0-tól kezdve. A generátor használatával könnyedén tudunk végtelen számsorozatokat feldolgozni, anélkül hogy az összes számot előre generálnánk.
A generátorok nagyon hasznosak lehetnek olyan esetekben, amikor nagy adathalmazokkal dolgozunk, vagy amikor csak egy részletét szeretnénk feldolgozni az adatoknak. A generátorok segítségével hatékonyan tudunk iterálni az adatokon, és csak akkor generáljuk az új értékeket, amikor szükség van rájuk.