Skip to content
میلاد حاتمی
میلاد حاتمی هستم. برنامه نویس و مدرس جنگو. امیدوارم بتونم با آموزش های رایگان در جنگولرن به برنامه نویس های این فریمورک کمک کنم.

حمایت از جنگولرن

تمامی مطالب و آموزش های جنگولرن رایگان است. برای حمایت از جنگولرن اینجا (پلتفرم کافیته) کلیک کنید.

09384677005 miladhzz@gmail.com instagram linkedin github-circle
جنگولرن - آموزش رایگان Django به زبان فارسی
خانه » تفاوت Sequence و Iterator و Iterable از نظر کد چیست؟
Post Views: 106

تفاوت Sequence و Iterator و Iterable از نظر کد چیست؟

دسامبر 3, 2023 دسامبر 3, 2023 دسته‌بندی نشده
میلاد حاتمی

یک سوال #مصاحبه دیگه
از کانال https://t.me/pytens
Core Python

❔ این سوالات برای هر موقعیت شغلی پایتون پرسیده می‌شه، سوال از تجربه شخصی دوستان توی مصاحبه هست که بنظرم سوال خیلی خوب و جالبی اومد
سطح : mid-level

یک کلاس برای تولید اعداد رندم بنویس :
کلاس رو توی ۳ حالت پیاده سازی کن :
1- Sequence
2- Iterator
3-Iterable

ازونجایی که کانال جای پیاده سازی نیست، سعی کنید فقط بگید تفاوت این ۳ از نظر کد چی هست !؟
مهمترین ویژگی‌هایی که یک کلاس باید داشته باشه تا توی یکی ازین دسته‌بندی ها قرار بگیره ؟

✅ جواب:
تفاوت‌ها :
Sequence :
توی پیاده سازی و استانداردش میگه که sequence باید ۲ تا متد رو حتما داشته باشه :
__len__, __getitem__
اگر این ۲ مورد رو پیاده سازی کنید قطعا sequence رو دارید.

Iterator:
۳ تا ویژگی اصلی داره طبق تعریف پروتکل توی پایتون
۱- فقط و فقط یکبار قابل استفاده هست ینی بعد از اینکه بار اول روش loop بزنید دیگه نمی‌تونید اینکار رو بکنید یا مقدار خالی بر میگردونه یا ارور و باید دوباره تعریف بشه توی توابع داخلی پایتون تابع
open()
اینطور هست.
۲- حتما باید متد __iter__ رو داشته باشه و این متد خودش رو برمیگردونه معمولا (ینی یک Iterator)
۳- متد __next__ براش تعریف میشه

Iterable :
۱- برخلاف Iterator با یکبار تعریف چندین بار میشه استفاده‌اش کرد بعنوان مثال تابع
range()
توی خود پایتون بریزیدش توی یک متغییر و بیش از ۱ بار روش loop بزنید هربار خروجی درست رو می‌گیرید

۲- شامل متد __iter__ میشه ولی خودش رو قطعا بر نمیگردونه و فقط و فقط یک iterator رو بر میگردونه
۳- متد __next__ براش پیاده سازی نمیشه چون روی خودش قرار نیست loop بزنید

بخش داکیومنت مربوط به این بحث :
Python docs

Post Views: 106
کپی از مطالب حتی بدون ذکر منبع مجاز است.