Форум сайта python.su
меня попросили сделать доклад на тему “итераторы и генераторы в python”. так как я пока новичок, то беспокоюсь правильно ли я сам понимаю тему. ниже я приведу несколько тезисов, которые буду рассказывать подробно и с примерами. оцените пожалуйста их. если увидите грубые ошибки и неточности, то укажите мне на них пожалуйста чтобы я поработал над этими моментами более тщательно
я не ставлю задачи рассказать слушателям о практических вещах типа заморозки функции при помощи yield, но хотел бы показать что представляют из себя генераторы и итераторы под капотом(не углубляясь сильно).
итак, вот мои тезисы:
class Obj(): # Итерируемый объект def __init__(self, word): self.word = word def __iter__(self): return Iterator(self.word) class Iterator: # Итератор def __init__(self, word): self.word = word self.index = 0 def __next__(self): try: letter = self.word[self.index] self.index += 1 return letter except IndexError: raise StopIteration() def __iter__(self): return self obj = Obj('sergey') it = iter(obj) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__iter__())
class Obj(): # функция-генератор def __init__(self, word): self.word = word def __iter__(self): # генератор for l in self.word: yield l obj = Obj('sergey') it = iter(obj) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(iter(it))
Офлайн