توی دقیقه 14:56 که استاد میگن تفاوت yield و return همین کدی هست که دیدیم من تفاوتشو متوجه نشدم چون تو yield آخرش یه متنی رو چاپ کرد و تو return اولش متن رو چاپ کرد؟!
سلام امیدوارم حالت خوب باشه علی جان . . .
ببین همونطور ک توی ویدیو استاد اشاره کردن ، وقتی از yield استفاده میکنیم تابع ما میشه یه جنریتور و خروجی اون یه چیز قابل پیمایش هست همچنین حافظه ای که براش در نظر گرفته میشه یک مقدار محدوده . حالا توی این مثال خروجی جنریتور مقدار اولین اجرای حلقه هست یعنی عدد صفر و همینطوری که جلو میره بعدی رو چاپ میکنه.
ولی جایی که از return استفاده کردیم باید کل اون لیست رو برگردونم به عبارتی جنریتورها lazy load هستن. (Lazy load هم یعنی اینکه منتظر میمونه تا execute بشه بعد مقدار میده )
حالا دلیل پیرینت اینه که وقتی return لیست رو میخواد بده لیست آماده میشه پرینت چاپ میشه بعد return انجام میشه ولی توی yield هی باید مراحل اجرا بشه(اعداد چاپ بشه) تا جایی که لیست تموم بشه بعد پرینت رشته انجام بشه.