Skip to content

برگه‌ها

  • درباره من

تماس با من

برای ارتباط با بنده ایمیل های خود را به آدرس :
miladhzz@gmail.com
ارسال کنید
و یا به شماره 09384677005 پیامک ارسال کنید.

سایت میلاد حاتمی
  • پروژه ها
  • آموزش
  • برنامه نویسی
  • نرم افزار
  • درباره من
خانه » تفاوت Sequence و Iterator و Iterable از نظر کد چیست؟

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

Post Views: 190
Leave a comment on تفاوت 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: 190

Add a Comment لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.

© 2025 - All rights reserved