رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد

نقشهٔ دوره

نقشهٔ کامل برنامه‌سازی پیشرفته با پایتون: همهٔ بخش‌ها و مطالب به‌ترتیب خواندن با زمان تقریبی مطالعه. از کجا شروع کنید و بعد چه بخوانید.

۱۳ بخش · ۸۱ مطلب · حدود ۱۶ ساعت و ۴۸ دقیقه مطالعه — به‌ترتیب خواندن.

  1. بخش ۰۱

    پیش‌نیاز و تفکر برنامه‌نویسی

    پل ورود به دوره: تفکر الگوریتمی، توابع، ارجاع‌ها و ساختار پروژه

    1. پل ورود به دوره مرور فشردهٔ پیش‌نیازهای پایتون: توابع، جهش‌پذیری، ارجاع‌ها و ساختار پروژه. نقطهٔ شروع دوره. ۲۰ دقیقه
    2. تابع و مسئولیت واحد چرا تابع‌های کوچک بهترند؟ مسئولیت واحد، نام‌گذاری و خالص‌بودن با مثال پایتون. ۶ دقیقه
    3. جهش‌پذیری و هویت شیء ارجاع، هویت و جهش‌پذیری: چرا b = a کپی نمی‌سازد و is با == چه فرقی دارد. ۸ دقیقه
    4. ماژول و ساختار پروژه ماژول چیست و نگهبان if __name__ == '__main__' چرا لازم است؛ ساختار تمیز پروژهٔ کوچک. ۶ دقیقه
    5. تقسیم قبض با تفکر بالا‌به‌پایین برنامه‌ای بنویس که مبلغ قبض، درصد انعام و تعداد نفرات را بگیرد و سهم هر نفر را با دو رقم اعشار چاپ کند. ۱۰ دقیقه
    6. تمرین پیش‌نیاز و تفکر برنامه‌نویسی پنج پرسش از تجزیه، جهش‌پذیری، ارجاع و ساختار ماژول با پاسخ تشریحی. ۱۰ دقیقه
  2. بخش ۰۲

    مبانی برنامه‌سازی شیءگرا

    شیء، کلاس، کپسوله‌سازی و طراحی مسئولیت‌ها

    1. شیءها و کلاس‌ها از تفکر شیءگرا تا اولین کلاس واقعی: self، سازنده، کپسوله‌سازی و طراحی مسئولیت با پایتون. ۲۵ دقیقه
    2. کلاس در برابر شیء تفاوت کلاس و شیء، ویژگی نمونه‌ای در برابر کلاسی و استقلال حالت با مثال بانکی. ۶ دقیقه
    3. self و سازنده سازندهٔ __init__، نقش self، ساخت شیء و خطاهای رایج فراموش‌کردن self. ۷ دقیقه
    4. کپسوله‌سازی کپسوله‌سازی بدون عضو خصوصی اجباری: قرارداد آندرلاین، name mangling و property. ۷ دقیقه
    5. انتزاع انتزاع در عمل: قرارداد عمومی، پنهان‌سازی جزئیات و مرز ماژول با مثال فروشگاه. ۶ دقیقه
    6. حساب بانکی با قرارداد تمیز کلاس حساب بانکی بساز که موجودی منفی نشود، ورودی نامعتبر را رد کند و موجودی مستقیم قابل دست‌کاری نباشد. ۱۲ دقیقه
    7. تمرین مبانی شیءگرایی پنج پرسش از کلاس و شیء، self، کپسوله‌سازی و انتزاع با پاسخ تشریحی. ۱۰ دقیقه
  3. بخش ۰۳

    وراثت و چندریختی

    وراثت، بازنویسی، ارسال پویا، ترکیب و MRO

    1. وراثت و چندریختی استفادهٔ دوبارهٔ امن از رفتار: وراثت، بازنویسی، ارسال پویا، super و انتخاب ترکیب در برابر وراثت. ۲۵ دقیقه
    2. وراثت و بازنویسی وراثت تکی، بازنویسی متد، super و همکاری سازنده‌ها با مثال حیوانات. ۸ دقیقه
    3. چندریختی و ارسال پویا چندریختی، ارسال پویا و تایپ‌ایمنی اردکی: چرا کد عمومی بدون تغییر روی نوع‌های تازه کار می‌کند. ۷ دقیقه
    4. کلاس انتزاعی و پروتکل abc.ABC و abstractmethod در برابر typing.Protocol: چه‌وقت کدام و تفاوت با اینترفیس جاوا. ۸ دقیقه
    5. ترکیب در برابر وراثت چه‌وقت ترکیب بهتر از وراثت است: قاعدهٔ هست/دارد، تزریق وابستگی و انعطاف تعویض رفتار. ۸ دقیقه
    6. وراثت چندگانه و MRO وراثت چندگانه، ترتیب حل متد، super مشارکتی و کاربرد درست میکسین‌ها. ۹ دقیقه
    7. شکل‌ها و مساحت چندریخت با ABC یک خانوادهٔ شکل بساز که ساخت شکلِ بدون مساحت ناممکن باشد و جمع مساحت‌ها روی هر ترکیبی کار کند. ۱۲ دقیقه
    8. تمرین وراثت و چندریختی پنج پرسش از بازنویسی، super، چندریختی، ABC و MRO با پاسخ تشریحی. ۱۲ دقیقه
  4. بخش ۰۴

    طراحی پیشرفته کلاس‌ها و مدل شیء پایتون

    متدهای کلاس و ایستا، ویژگی‌ها، متدهای جادویی و چرخهٔ عمر شیء

    1. طراحی پیشرفتهٔ کلاس‌ها متد کلاس و ایستا، ویژگی‌ها، متدهای جادویی، دیتاکلاس‌ها و چرخهٔ عمر شیء در مدل شیء پایتون. ۳۰ دقیقه
    2. متد کلاس و متد ایستا تفاوت classmethod و staticmethod، سازندهٔ جایگزین و حفظ چندریختی در ارث‌بری. ۷ دقیقه
    3. ویژگی‌ها (property) property، setter و deleter: چرا قرارداد را پایدار نگه می‌دارند و دام محاسبات سنگین چیست. ۷ دقیقه
    4. متدهای جادویی (dunder) مهم‌ترین dunderها: نمایش، برابری، طول، عملگر و پروتکل تکرار با جدول انتخاب. ۹ دقیقه
    5. چرخهٔ عمر شیء و زباله‌روبی شمارش ارجاع، چرخهٔ ارجاعی، __del__ غیرقابل‌اعتماد و الگوی درست مدیریت منبع. ۸ دقیقه
    6. بردار با رفتار طبیعی بردار دوبعدی بساز که با + جمع شود، با == مقایسهٔ مقداری شود و چاپش خوانا باشد. ۱۲ دقیقه
    7. تمرین طراحی پیشرفتهٔ کلاس‌ها چهار پرسش از classmethod، property، dunder و چرخهٔ عمر شیء با پاسخ تشریحی. ۱۰ دقیقه
  5. بخش ۰۵

    ماژول، پکیج و برنامه‌نویسی جنریک

    واردات، فضاهای نام، اعلان نوع و طراحی نوع‌محور

    1. ماژول، پکیج و برنامه‌نویسی جنریک واردات و فضاهای نام، ساختار پکیج، اعلان نوع، TypeVar و Protocol برای طراحی نوع‌محور. ۲۵ دقیقه
    2. واردات و فضاهای نام سبک‌های import، واردات مطلق در برابر نسبی، trap واردات چرخه‌ای و نقش __init__.py. ۷ دقیقه
    3. اعلان نوع و جنریک‌ها typing، TypeVar، Generic و Protocol: طراحی نوع‌محور بدون ادعای اجبار اجرایی. ۹ دقیقه
    4. پشتهٔ جنریک با کنترل خطا پشته‌ای بساز که هم برای رشته و هم برای عدد کار کند و pop از پشتهٔ خالی را با استثنای معنادار رد کند. ۱۲ دقیقه
    5. تمرین ماژول و برنامه‌نویسی جنریک چهار پرسش از واردات، جنریک، Protocol و overload با پاسخ تشریحی. ۱۰ دقیقه
  6. بخش ۰۶

    مدیریت خطا، اشکال‌زدایی و آزمون

    استثناها، زمینه‌بان‌ها، روش اشکال‌زدایی و تست واحد

    1. خطا، اشکال‌زدایی و آزمون استثناها و جریان انتشار، زمینه‌بان‌ها، روش اشکال‌زدایی، تست واحد و دابل‌های تست. ۳۰ دقیقه
    2. استثناها و جریان انتشار سلسله‌مراتب استثنا، try/except/else/finally، استثنای دامنه‌ای و قانون مرز ترجمه. ۸ دقیقه
    3. زمینه‌بان‌ها پروتکل زمینه‌بان، contextlib، ساختن مدیر سفارشی و الگوی قفل/فایل/اتصال. ۷ دقیقه
    4. تست واحد آناتومی تست خوب، unittest در برابر pytest، تست استثنا و نام‌گذاری روشن. ۹ دقیقه
    5. موک و دابل‌های تست unittest.mock، چه‌وقت موک بزنیم، دام موک‌زدنِ بیش‌ازحد و تستِ قرارداد. ۸ دقیقه
    6. تلاش مجدد با زمینه‌بان یک اتصال شبیه‌سازی‌شده بساز که دوبار اول خطا می‌دهد؛ با تلاش مجدد وصل شو و آزادسازی را تضمین کن. ۱۲ دقیقه
    7. تست‌نویسی برای حساب بانکی برای واریز و برداشت، تست مسیر اصلی، موجودی ناکافی، ورودی نامعتبر و موجودی اولیهٔ منفی بنویس. ۱۲ دقیقه
    8. تمرین خطا و آزمون پنج پرسش از ترتیب except، else، زمینه‌بان، تست و موک با پاسخ تشریحی. ۱۲ دقیقه
  7. بخش ۰۷

    ساختمان داده‌ها و الگوریتم‌های پایه

    کالکشن‌های پایتون، تکرارگرها، جست‌وجو، مرتب‌سازی و پیچیدگی

    1. کالکشن‌ها و الگوریتم‌های پایه انتخاب ساختار درست: لیست، دیکشنری، مجموعه، تکرارگر و مولد، جست‌وجو، مرتب‌سازی و پیچیدگی. ۳۰ دقیقه
    2. تکرارگرها و مولدها پروتکل تکرار، next و StopIteration، yield و مولدهای بی‌نهایت با مثال عملی. ۸ دقیقه
    3. انتخاب کالکشن درست راهنمای تصمیم کالکشن با هزینهٔ عملیات، deque و دام لیستِ مرتب‌نشده برای جست‌وجو. ۸ دقیقه
    4. تعریف O بزرگ تعریف دقیق O بزرگ: کران بالای رشد، حذف ثابت‌ها و خواندن درست نماد با مثال. ۶ دقیقه
    5. رده‌های رایج پیچیدگی مرتب‌سازی رده‌های پیچیدگی از ثابت تا نمایی و نگاشت هر کدام به مثال ملموس پایتونی. ۶ دقیقه
    6. گام‌های جست‌وجوی دودویی چرا جست‌وجوی دودویی لگاریتمی است: نصف‌کردن مسئله و سقف تعداد گام‌ها. ۵ دقیقه
    7. لیست پیوندی از صفر لیست پیوندی بساز که آخرش اضافه کند، عضوی را پیدا کند و طولش O(1) نباشد — بعد توضیح بده چرا. ۱۵ دقیقه
    8. رقابت مرتب‌سازی‌ها روی ۲۰۰۰ عدد تصادفی، مرتب‌سازی حبابی را با sorted مقایسه کن و نتیجه را با O توضیح بده. ۱۲ دقیقه
    9. تمرین کالکشن و الگوریتم پنج پرسش از انتخاب ساختار، مولد، پیچیدگی و جست‌وجو با پاسخ تشریحی. ۱۲ دقیقه
  8. بخش ۰۸

    فایل، ورودی/خروجی و سریال‌سازی

    متن و باینری، pathlib، JSON و CSV و بار امن دادهٔ خارجی

    1. فایل، ورودی/خروجی و سریال‌سازی خواندن و نوشتن متن و باینری، pathlib، الگوهای زمینه‌بان، JSON و CSV و بار امن دادهٔ خارجی. ۲۵ دقیقه
    2. مسیرها با pathlib Path، عملگر /، glob، پیمایش خط‌به‌خط و دام خواندن یک‌جای فایل غول‌پیکر. ۶ دقیقه
    3. JSON و CSV و بار امن سریال‌سازی امن: json، csv، اعتبارسنجی ورودی و هشدار جدی pickle. ۸ دقیقه
    4. خط لولهٔ نمره‌ها از CSV تا JSON فایل نمره‌های CSV را بخوان، سطرهای خراب را با شماره گزارش کن و نتیجهٔ تمیز را JSON ذخیره کن. ۱۲ دقیقه
    5. تمرین فایل و سریال‌سازی چهار پرسش از with، pathlib، JSON امن و خطر pickle با پاسخ تشریحی. ۱۰ دقیقه
  9. بخش ۰۹

    بازآرایی، کد تمیز و الگوهای طراحی

    بوی کد، ساده‌سازی، انسجام و الگوهای کاربردی با جایگزین پایتونیک

    1. بازآرایی، کد تمیز و الگوهای طراحی استدلال پشت بازآرایی: بوی کد، استخراج و جابه‌جایی، ساده‌سازی و الگوهای کاربردی با جایگزین پایتونیک. ۳۰ دقیقه
    2. بوی کد رایج‌ترین بوهای کد، علت هر کدام و بازآراییِ متناظر با مثال کوتاه. ۸ دقیقه
    3. ساده‌سازی شرط‌ها و فراخوانی‌ها نگهبان‌ها، شرطِ نام‌دار، حذف پرچم کنترلی و ساده‌سازی امضای تابع. ۸ دقیقه
    4. الگوهای طراحی به سبک پایتون الگوهای کاربردی با پیاده‌سازی تابعی، Singleton مشکوک و ملاکِ «کِی الگو بیاوریم». ۱۰ دقیقه
    5. تخفیف راهبردی بدون if تودرتو سه نوع تخفیف داری و نوع چهارم در راه است؛ کدی بنویس که افزودن راهبرد، تغییر کدِ موجود نخواهد. ۱۲ دقیقه
    6. تمرین بازآرایی و الگوها چهار پرسش از تعریف بازآرایی، نگهبان، Strategy و دام Singleton با پاسخ تشریحی. ۱۰ دقیقه
  10. بخش ۱۰

    رابط گرافیکی و برنامه‌نویسی رویدادمحور

    مدل ذهنی GUI، حلقهٔ رویداد و جدایی منطق از نما

    1. رابط گرافیکی و برنامه‌نویسی رویدادمحور مدل ذهنی GUI: حلقهٔ رویداد، ویجت‌ها، callbackها و جدایی منطق برنامه از نما با یک مثال واقعی. ۲۵ دقیقه
    2. حلقهٔ رویداد مدل رویدادمحور: صف رویداد، callback، چرا کار سنگین رابط را قفل می‌کند و راه‌حلش. ۷ دقیقه
    3. شمارندهٔ کلیک با منطق جدا دکمه‌ای که با هر کلیک شمارنده را یکی زیاد می‌کند؛ منطق را طوری بنویس که بدون GUI هم تست شود. ۱۰ دقیقه
    4. تمرین رابط گرافیکی سه پرسش از حلقهٔ رویداد، callback سنگین و جدایی منطق از نما. ۸ دقیقه
  11. بخش ۱۱

    هم‌روندی، موازی‌سازی و شبکه

    ریسه‌ها، همگام‌سازی، اجراکننده‌ها و سوکت‌های TCP

    1. هم‌روندی، موازی‌سازی و شبکه ریسه در برابر فرایند، حالت مشترک و قفل، صف امن، اجراکننده‌ها و سوکت TCP با یک پروتکل کوچک واقعی. ۳۵ دقیقه
    2. ریسه‌ها و قفل‌ها چرخهٔ عمر ریسه، مسابقهٔ داده‌ای، Lock و قانونِ «کمترین حالت مشترک». ۹ دقیقه
    3. اجراکننده‌ها و صف‌ها queue.Queue، تولیدکننده/مصرف‌کننده و ThreadPoolExecutor با مثال دانلود موازی. ۹ دقیقه
    4. سوکت و TCP چرخهٔ سوکت TCP، بایت در برابر رشته، مرز پیام و تفاوت TCP و UDP. ۱۰ دقیقه
    5. شمارندهٔ امن در چهار ریسه چهار ریسه هر کدام ۱۰۰۰۰ بار شمارنده را زیاد می‌کنند؛ بدون قفل چه می‌شود و با قفل چه؟ ۱۲ دقیقه
    6. پروتکل اکوی کوچک با سوکت سرور اکویی بساز که پیام فارسی را بگیرد و با پیشوند echo برگرداند؛ مرز پیام را هم حل کن. ۱۵ دقیقه
    7. تمرین هم‌روندی و شبکه پنج پرسش از مسابقهٔ داده‌ای، GIL، صف، Executor و سوکت با پاسخ تشریحی. ۱۲ دقیقه
  12. بخش ۱۲

    بازتاب و مباحث تکمیلی

    درون‌نگری، تزئین‌کننده‌ها، بستارها و enum

    1. بازتاب و مباحث تکمیلی درون‌نگری با type و inspect، اعلان‌ها به‌مثابه فراداده، تزئین‌کننده‌ها، بستارها و enum. ۲۵ دقیقه
    2. درون‌نگری و inspect جعبه‌ابزار بازتاب: type، isinstance، hasattr، getattr، dir و ماژول inspect. ۷ دقیقه
    3. تزئین‌کننده‌ها و بستارها nonlocal، کارخانهٔ تابع، دکوراتور با آرگومان و قانون wraps. ۹ دقیقه
    4. شمارش‌ها (enum) enum.Enum، auto، رفتار در مقایسه و انتخاب در برابر رشته و ثابت. ۶ دقیقه
    5. رجیستری دستور با دکوراتور سیستمی بساز که هر تابعِ دارای دکوراتور register خودکار دستورِ برنامه شود و راهنما از امضاها ساخته شود. ۱۲ دقیقه
    6. تمرین بازتاب و مباحث تکمیلی چهار پرسش از getattr، بستار، wraps و enum با پاسخ تشریحی. ۱۰ دقیقه
  13. بخش ۱۳

    مرور، حل مسئله و پروژه

    تمرین‌های ترکیبی، ردیابی کد و پروژهٔ پایانی

    1. مرور، حل مسئله و پروژه جمع‌بندی کل مسیر: ردیابی کد، اشکال‌زدایی، تصمیم طراحی و پروژهٔ پایانی فروشگاه. ۴۰ دقیقه
    2. فروشگاه کوچک (پروژهٔ پایانی) فروشگاه بساز: کاتالوگ، سبد با تخفیف راهبردی، ذخیرهٔ JSON، تست سبز و گزارش هم‌روند امن. ۲۵ دقیقه
    3. تمرین جامع پایانی شش پرسش ترکیبی از کل دوره: ردیابی، طراحی، استثنا، کالکشن، هم‌روندی و شبکه. ۱۵ دقیقه