Junior
138
Python-да генераторлар қандай ерекше?
AI-дан жауап
sobes.tech AI
- Баяу есептеу: Элементтер қажеттілікке қарай генерацияланады, бәрі бірден емес.
- Жадыны үнемдеу: Генераторлар барлық тізбекті жадыда сақтамайды, бұл үлкен деректер үшін маңызды.
- Итераторларды пайдалану: Генератор — бұл да итератор, ол
__iter__()және__next__()протоколдарын қолдайды. yieldкілт сөзін пайдалану:yieldбар функция — бұл генераторға айналады. Әрnext()шақырғанда, генератор соңғыyield-дан кейін орындалуды жалғастырады.
# Генератор мысалы
def my_generator():
print("Бастау")
yield 1
print("Жалғастыру")
yield 2
print("Аяқтау")
# Генераторды пайдалану
gen = my_generator()
print(next(gen))
print(next(gen))
# print(next(gen)) # StopIteration қателігін тудырады
- Генераторлық өрнектер (generator expressions): қарапайым генераторларды құру үшін ықшам синтаксис, тізімдік қамтуларға ұқсас, бірақ дөңгелек жақшаларда.
# Генераторлық өрнек мысалы
gen_exp = (x*x for x in range(5))
# Генераторлық өрнекті пайдалану
print(next(gen_exp))
print(next(gen_exp))