Sobes.tech
Middle

Τι είναι οι επαναληπτές και οι γεννήτριες στην Python και ποια είναι η διαφορά τους;

sobes.tech AI

Απάντηση από AI

Ένας επαναληπτής (iterator) στην Python είναι ένα αντικείμενο που υλοποιεί τις μεθόδους __iter__() και __next__(). Επιτρέπει την διαδοχική επανάληψη των στοιχείων μιας συλλογής χωρίς να χρειάζεται να φορτώσετε όλα τα δεδομένα στη μνήμη ταυτόχρονα.

Ένας γεννήτορας (generator) είναι ένας ειδικός τύπος επαναληπτή που δημιουργείται με συναρτήσεις με τη λέξη-κλειδί yield ή εκφράσεις γεννήτορα. Οι γεννήτορες υπολογίζουν αργά τις τιμές καθώς χρειάζονται, εξοικονομώντας μνήμη και επιτρέποντας εργασία με πιθανώς άπειρες ακολουθίες.

Βασικές διαφορές:

  • Ένας επαναληπτής είναι μια γενική διεπαφή για διαδοχική διαδρομή στοιχείων.
  • Ένας γεννήτορας είναι ένας βολικός τρόπος δημιουργίας επαναληπτών με yield.

Παράδειγμα γεννήτορα:

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)

Εδώ, το count_up_to είναι ένας γεννήτορας που επιστρέφει αριθμούς από το 1 έως το n, έναν κάθε φορά.