yeild چیست و چه تفاوتی با return دارد ( پایتون )

سلام تو یه کد دیدم که از yeild در متد __iter__ استفاده کرده بود ولی نفهمیدم چی کار می کنه اول اینکه __iter__ چیست و بعد اینکه yeild چیست و چه کار می کند. اگه میشیه با یه کد نشون بدین تا بهتر بفهمم. با تشکر
پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 7 سال پیش
قبل از اینکه با ییلد آشنا بشید، باید بدونید که جنراتورها چی هستن. به طور کلی، یک generator یک iterator هست اما فقط و فقط یک بار می تونید روی آن حلقه بزنید و محتوایش رو ببینید و دلیل این قضیه هم این است که تمامی داده های جنراتورها در حافظه ذخیره نمیشن. yield کلیدواژه ای هست که همچون return مورد استفاده قرار میگیره با این تفاوت که فانکشن مدنظر یک جنراتور رو بازمیگردونه
 def createGenerator():
...    mylist = range(3)
...    for i in mylist:
...        yield i*i
...
 mygenerator = createGenerator() # create a generator
 print(mygenerator) # mygenerator is an object!

 for i in mygenerator:
...     print(i)
0
1
4
online-support-icon