Junior — Middle
96
Python-да yield операторын қолданбай, генераторға ұқсас функцияны қалай жасауға болады?
AI-дан жауап
sobes.tech AI
Python-да yield операторын қолданбай генератордың баламасын жүзеге асыруға болады, ол үшін итераторды жүзеге асыратын класс құру керек. Ол үшін __iter__() және __next__() әдістерін анықтау қажет.
yield қолданбай Фибоначчи сандар генераторының мысалы:
class Fib:
def __init__(self, max_count):
self.max_count = max_count
self.count = 0
self.a, self.b = 0, 1
def __iter__(self):
return self
def __next__(self):
if self.count >= self.max_count:
raise StopIteration
self.count += 1
value = self.a
self.a, self.b = self.b, self.a + self.b
return value
# Қолдану:
for num in Fib(5):
print(num)
Мұндай класс генератор сияқты әрекет етеді, бірақ yield қолданбайды. Итерация класс әдістері арқылы жүзеге асады.