Generator در پایتون یک نوع خاص از توابع است که میتوانند مقادیر را به صورت تاخیری تولید کنند. به جای بازگشت مقدار به صورت کامل، یک generator مقدار را تولید کرده و سپس متوقف میشود. در ادامه میتوانید یک مثال ساده از استفاده از generator در پایتون را ببینید:
def my_generator():
yield 1
yield 2
yield 3
# استفاده از generator
gen = my_generator()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3
در این مثال، تابع my_generator
یک generator است که با استفاده از کلمه کلیدی yield
مقادیر 1، 2 و 3 را تولید میکند. سپس با استفاده از تابع next
مقادیر تولید شده را دریافت میکنیم.
استفاده از generator ها میتواند در مواردی که نیاز به تولید مقادیر بزرگ و پیوسته استفاده میشود. به عنوان مثال، در مواردی که لیستی از اعداد بسیار بزرگ را نیاز داریم، استفاده از generator ها میتواند بهینه تر باشد زیرا تمام مقادیر را در حافظه نگه نمی دارد و فقط مقدار مورد نیاز را تولید میکند.
زمانی که یک تابع Generator فراخوانی میشود، تنها یک شیء Generator ایجاد میشود و هیچ دادهای در حافظه ذخیره نمیشود. به جای ذخیره کامل دادهها، Generator تنها مقدار تولید شده توسط yield را در حافظه نگه میدارد. این ویژگی به برنامهنویسان امکان تولید دادههای بزرگ را با مصرف کمتر حافظه میدهد.
مزیت دیگر استفاده از Generator ها در پایتون، امکان تولید دادههای بزرگ به صورت تکهتکه و درخواستی است. به جای تولید و ذخیره کامل دادهها در حافظه، Generator ها میتوانند دادهها را به صورت تکهتکه و درخواستی تولید کنند. این ویژگی به برنامهنویسان امکان مدیریت بهتر حافظه و بهینهسازی عملکرد برنامه را میدهد.
دیدگاهها