Sobes.tech
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))