fzahedi79

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

fzahedi79 ۱۳۹۶/۰۶/۱۱ 36 زبان برنامه‌نویسی پایتون

سلام تو یه کد دیدم که از yeild در متد __iter__ استفاده کرده بود ولی نفهمیدم چی کار می کنه اول اینکه __iter__ چیست و بعد اینکه yeild چیست و چه کار می کند. اگه میشیه با یه کد نشون بدین تا بهتر بفهمم. با تشکر
پاسخ‌ها به این تاپیک
احمد سلطان‌پور
احمد سلطان‌پور
۱۳۹۶/۰۶/۱۵
قبل از اینکه با ییلد آشنا بشید، باید بدونید که جنراتورها چی هستن.
به طور کلی، یک 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