🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ ali abdi
تفاوت yield و return
جامعه پایتون (وب) ایجاد شده در ۰۳ آبان ۱۴۰۱

سلام و درود

توی دقیقه 14:56 که استاد میگن تفاوت yield و return همین کدی هست که دیدیم من تفاوتشو متوجه نشدم چون تو yield آخرش یه متنی رو چاپ کرد و تو return اولش متن رو چاپ کرد؟!

سلام امیدوارم حالت خوب باشه علی جان . . .

ببین همون‌طور ک توی ویدیو استاد اشاره کردن ، وقتی از yield استفاده میکنیم تابع ما میشه یه جنریتور و خروجی اون یه چیز قابل پیمایش هست همچنین حافظه ای که براش در نظر گرفته میشه یک مقدار محدوده . حالا توی این مثال خروجی جنریتور مقدار اولین اجرای حلقه هست یعنی عدد صفر و همینطوری که جلو می‌ره بعدی رو چاپ میکنه.

ولی جایی که از return استفاده کردیم باید کل اون لیست رو برگردونم به عبارتی جنریتور‌ها lazy load هستن. (Lazy load هم یعنی اینکه منتظر میمونه تا execute بشه بعد مقدار میده )

حالا دلیل پیرینت اینه که وقتی return لیست رو میخواد بده لیست آماده میشه پرینت چاپ میشه بعد return انجام میشه ولی توی yield هی باید مراحل اجرا بشه(اعداد چاپ بشه) تا جایی که لیست تموم بشه بعد پرینت رشته انجام بشه.

امیدوارم ک جواب سوالت رو گرفته باشی .

موفق باشی ?

بهترین پاسخ
Reza Mobaraki ۰۳ آبان ۱۴۰۱، ۱۶:۴۳