نقشهٔ دوره
نقشهٔ کامل برنامهسازی پیشرفته با پایتون: همهٔ بخشها و مطالب بهترتیب خواندن با زمان تقریبی مطالعه. از کجا شروع کنید و بعد چه بخوانید.
۱۳ بخش · ۸۱ مطلب · حدود ۱۶ ساعت و ۴۸ دقیقه مطالعه — بهترتیب خواندن.
- بخش ۰۱
پیشنیاز و تفکر برنامهنویسی
پل ورود به دوره: تفکر الگوریتمی، توابع، ارجاعها و ساختار پروژه
- پل ورود به دوره مرور فشردهٔ پیشنیازهای پایتون: توابع، جهشپذیری، ارجاعها و ساختار پروژه. نقطهٔ شروع دوره. ۲۰ دقیقه
- تابع و مسئولیت واحد چرا تابعهای کوچک بهترند؟ مسئولیت واحد، نامگذاری و خالصبودن با مثال پایتون. ۶ دقیقه
- جهشپذیری و هویت شیء ارجاع، هویت و جهشپذیری: چرا b = a کپی نمیسازد و is با == چه فرقی دارد. ۸ دقیقه
- ماژول و ساختار پروژه ماژول چیست و نگهبان if __name__ == '__main__' چرا لازم است؛ ساختار تمیز پروژهٔ کوچک. ۶ دقیقه
- تقسیم قبض با تفکر بالابهپایین برنامهای بنویس که مبلغ قبض، درصد انعام و تعداد نفرات را بگیرد و سهم هر نفر را با دو رقم اعشار چاپ کند. ۱۰ دقیقه
- تمرین پیشنیاز و تفکر برنامهنویسی پنج پرسش از تجزیه، جهشپذیری، ارجاع و ساختار ماژول با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۰۲
مبانی برنامهسازی شیءگرا
شیء، کلاس، کپسولهسازی و طراحی مسئولیتها
- شیءها و کلاسها از تفکر شیءگرا تا اولین کلاس واقعی: self، سازنده، کپسولهسازی و طراحی مسئولیت با پایتون. ۲۵ دقیقه
- کلاس در برابر شیء تفاوت کلاس و شیء، ویژگی نمونهای در برابر کلاسی و استقلال حالت با مثال بانکی. ۶ دقیقه
- self و سازنده سازندهٔ __init__، نقش self، ساخت شیء و خطاهای رایج فراموشکردن self. ۷ دقیقه
- کپسولهسازی کپسولهسازی بدون عضو خصوصی اجباری: قرارداد آندرلاین، name mangling و property. ۷ دقیقه
- انتزاع انتزاع در عمل: قرارداد عمومی، پنهانسازی جزئیات و مرز ماژول با مثال فروشگاه. ۶ دقیقه
- حساب بانکی با قرارداد تمیز کلاس حساب بانکی بساز که موجودی منفی نشود، ورودی نامعتبر را رد کند و موجودی مستقیم قابل دستکاری نباشد. ۱۲ دقیقه
- تمرین مبانی شیءگرایی پنج پرسش از کلاس و شیء، self، کپسولهسازی و انتزاع با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۰۳
وراثت و چندریختی
وراثت، بازنویسی، ارسال پویا، ترکیب و MRO
- وراثت و چندریختی استفادهٔ دوبارهٔ امن از رفتار: وراثت، بازنویسی، ارسال پویا، super و انتخاب ترکیب در برابر وراثت. ۲۵ دقیقه
- وراثت و بازنویسی وراثت تکی، بازنویسی متد، super و همکاری سازندهها با مثال حیوانات. ۸ دقیقه
- چندریختی و ارسال پویا چندریختی، ارسال پویا و تایپایمنی اردکی: چرا کد عمومی بدون تغییر روی نوعهای تازه کار میکند. ۷ دقیقه
- کلاس انتزاعی و پروتکل abc.ABC و abstractmethod در برابر typing.Protocol: چهوقت کدام و تفاوت با اینترفیس جاوا. ۸ دقیقه
- ترکیب در برابر وراثت چهوقت ترکیب بهتر از وراثت است: قاعدهٔ هست/دارد، تزریق وابستگی و انعطاف تعویض رفتار. ۸ دقیقه
- وراثت چندگانه و MRO وراثت چندگانه، ترتیب حل متد، super مشارکتی و کاربرد درست میکسینها. ۹ دقیقه
- شکلها و مساحت چندریخت با ABC یک خانوادهٔ شکل بساز که ساخت شکلِ بدون مساحت ناممکن باشد و جمع مساحتها روی هر ترکیبی کار کند. ۱۲ دقیقه
- تمرین وراثت و چندریختی پنج پرسش از بازنویسی، super، چندریختی، ABC و MRO با پاسخ تشریحی. ۱۲ دقیقه
- بخش ۰۴
طراحی پیشرفته کلاسها و مدل شیء پایتون
متدهای کلاس و ایستا، ویژگیها، متدهای جادویی و چرخهٔ عمر شیء
- طراحی پیشرفتهٔ کلاسها متد کلاس و ایستا، ویژگیها، متدهای جادویی، دیتاکلاسها و چرخهٔ عمر شیء در مدل شیء پایتون. ۳۰ دقیقه
- متد کلاس و متد ایستا تفاوت classmethod و staticmethod، سازندهٔ جایگزین و حفظ چندریختی در ارثبری. ۷ دقیقه
- ویژگیها (property) property، setter و deleter: چرا قرارداد را پایدار نگه میدارند و دام محاسبات سنگین چیست. ۷ دقیقه
- متدهای جادویی (dunder) مهمترین dunderها: نمایش، برابری، طول، عملگر و پروتکل تکرار با جدول انتخاب. ۹ دقیقه
- چرخهٔ عمر شیء و زبالهروبی شمارش ارجاع، چرخهٔ ارجاعی، __del__ غیرقابلاعتماد و الگوی درست مدیریت منبع. ۸ دقیقه
- بردار با رفتار طبیعی بردار دوبعدی بساز که با + جمع شود، با == مقایسهٔ مقداری شود و چاپش خوانا باشد. ۱۲ دقیقه
- تمرین طراحی پیشرفتهٔ کلاسها چهار پرسش از classmethod، property، dunder و چرخهٔ عمر شیء با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۰۵
ماژول، پکیج و برنامهنویسی جنریک
واردات، فضاهای نام، اعلان نوع و طراحی نوعمحور
- ماژول، پکیج و برنامهنویسی جنریک واردات و فضاهای نام، ساختار پکیج، اعلان نوع، TypeVar و Protocol برای طراحی نوعمحور. ۲۵ دقیقه
- واردات و فضاهای نام سبکهای import، واردات مطلق در برابر نسبی، trap واردات چرخهای و نقش __init__.py. ۷ دقیقه
- اعلان نوع و جنریکها typing، TypeVar، Generic و Protocol: طراحی نوعمحور بدون ادعای اجبار اجرایی. ۹ دقیقه
- پشتهٔ جنریک با کنترل خطا پشتهای بساز که هم برای رشته و هم برای عدد کار کند و pop از پشتهٔ خالی را با استثنای معنادار رد کند. ۱۲ دقیقه
- تمرین ماژول و برنامهنویسی جنریک چهار پرسش از واردات، جنریک، Protocol و overload با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۰۶
مدیریت خطا، اشکالزدایی و آزمون
استثناها، زمینهبانها، روش اشکالزدایی و تست واحد
- خطا، اشکالزدایی و آزمون استثناها و جریان انتشار، زمینهبانها، روش اشکالزدایی، تست واحد و دابلهای تست. ۳۰ دقیقه
- استثناها و جریان انتشار سلسلهمراتب استثنا، try/except/else/finally، استثنای دامنهای و قانون مرز ترجمه. ۸ دقیقه
- زمینهبانها پروتکل زمینهبان، contextlib، ساختن مدیر سفارشی و الگوی قفل/فایل/اتصال. ۷ دقیقه
- تست واحد آناتومی تست خوب، unittest در برابر pytest، تست استثنا و نامگذاری روشن. ۹ دقیقه
- موک و دابلهای تست unittest.mock، چهوقت موک بزنیم، دام موکزدنِ بیشازحد و تستِ قرارداد. ۸ دقیقه
- تلاش مجدد با زمینهبان یک اتصال شبیهسازیشده بساز که دوبار اول خطا میدهد؛ با تلاش مجدد وصل شو و آزادسازی را تضمین کن. ۱۲ دقیقه
- تستنویسی برای حساب بانکی برای واریز و برداشت، تست مسیر اصلی، موجودی ناکافی، ورودی نامعتبر و موجودی اولیهٔ منفی بنویس. ۱۲ دقیقه
- تمرین خطا و آزمون پنج پرسش از ترتیب except، else، زمینهبان، تست و موک با پاسخ تشریحی. ۱۲ دقیقه
- بخش ۰۷
ساختمان دادهها و الگوریتمهای پایه
کالکشنهای پایتون، تکرارگرها، جستوجو، مرتبسازی و پیچیدگی
- کالکشنها و الگوریتمهای پایه انتخاب ساختار درست: لیست، دیکشنری، مجموعه، تکرارگر و مولد، جستوجو، مرتبسازی و پیچیدگی. ۳۰ دقیقه
- تکرارگرها و مولدها پروتکل تکرار، next و StopIteration، yield و مولدهای بینهایت با مثال عملی. ۸ دقیقه
- انتخاب کالکشن درست راهنمای تصمیم کالکشن با هزینهٔ عملیات، deque و دام لیستِ مرتبنشده برای جستوجو. ۸ دقیقه
- تعریف O بزرگ تعریف دقیق O بزرگ: کران بالای رشد، حذف ثابتها و خواندن درست نماد با مثال. ۶ دقیقه
- ردههای رایج پیچیدگی مرتبسازی ردههای پیچیدگی از ثابت تا نمایی و نگاشت هر کدام به مثال ملموس پایتونی. ۶ دقیقه
- گامهای جستوجوی دودویی چرا جستوجوی دودویی لگاریتمی است: نصفکردن مسئله و سقف تعداد گامها. ۵ دقیقه
- لیست پیوندی از صفر لیست پیوندی بساز که آخرش اضافه کند، عضوی را پیدا کند و طولش O(1) نباشد — بعد توضیح بده چرا. ۱۵ دقیقه
- رقابت مرتبسازیها روی ۲۰۰۰ عدد تصادفی، مرتبسازی حبابی را با sorted مقایسه کن و نتیجه را با O توضیح بده. ۱۲ دقیقه
- تمرین کالکشن و الگوریتم پنج پرسش از انتخاب ساختار، مولد، پیچیدگی و جستوجو با پاسخ تشریحی. ۱۲ دقیقه
- بخش ۰۸
فایل، ورودی/خروجی و سریالسازی
متن و باینری، pathlib، JSON و CSV و بار امن دادهٔ خارجی
- فایل، ورودی/خروجی و سریالسازی خواندن و نوشتن متن و باینری، pathlib، الگوهای زمینهبان، JSON و CSV و بار امن دادهٔ خارجی. ۲۵ دقیقه
- مسیرها با pathlib Path، عملگر /، glob، پیمایش خطبهخط و دام خواندن یکجای فایل غولپیکر. ۶ دقیقه
- JSON و CSV و بار امن سریالسازی امن: json، csv، اعتبارسنجی ورودی و هشدار جدی pickle. ۸ دقیقه
- خط لولهٔ نمرهها از CSV تا JSON فایل نمرههای CSV را بخوان، سطرهای خراب را با شماره گزارش کن و نتیجهٔ تمیز را JSON ذخیره کن. ۱۲ دقیقه
- تمرین فایل و سریالسازی چهار پرسش از with، pathlib، JSON امن و خطر pickle با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۰۹
بازآرایی، کد تمیز و الگوهای طراحی
بوی کد، سادهسازی، انسجام و الگوهای کاربردی با جایگزین پایتونیک
- بازآرایی، کد تمیز و الگوهای طراحی استدلال پشت بازآرایی: بوی کد، استخراج و جابهجایی، سادهسازی و الگوهای کاربردی با جایگزین پایتونیک. ۳۰ دقیقه
- بوی کد رایجترین بوهای کد، علت هر کدام و بازآراییِ متناظر با مثال کوتاه. ۸ دقیقه
- سادهسازی شرطها و فراخوانیها نگهبانها، شرطِ نامدار، حذف پرچم کنترلی و سادهسازی امضای تابع. ۸ دقیقه
- الگوهای طراحی به سبک پایتون الگوهای کاربردی با پیادهسازی تابعی، Singleton مشکوک و ملاکِ «کِی الگو بیاوریم». ۱۰ دقیقه
- تخفیف راهبردی بدون if تودرتو سه نوع تخفیف داری و نوع چهارم در راه است؛ کدی بنویس که افزودن راهبرد، تغییر کدِ موجود نخواهد. ۱۲ دقیقه
- تمرین بازآرایی و الگوها چهار پرسش از تعریف بازآرایی، نگهبان، Strategy و دام Singleton با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۱۰
رابط گرافیکی و برنامهنویسی رویدادمحور
مدل ذهنی GUI، حلقهٔ رویداد و جدایی منطق از نما
- رابط گرافیکی و برنامهنویسی رویدادمحور مدل ذهنی GUI: حلقهٔ رویداد، ویجتها، callbackها و جدایی منطق برنامه از نما با یک مثال واقعی. ۲۵ دقیقه
- حلقهٔ رویداد مدل رویدادمحور: صف رویداد، callback، چرا کار سنگین رابط را قفل میکند و راهحلش. ۷ دقیقه
- شمارندهٔ کلیک با منطق جدا دکمهای که با هر کلیک شمارنده را یکی زیاد میکند؛ منطق را طوری بنویس که بدون GUI هم تست شود. ۱۰ دقیقه
- تمرین رابط گرافیکی سه پرسش از حلقهٔ رویداد، callback سنگین و جدایی منطق از نما. ۸ دقیقه
- بخش ۱۱
همروندی، موازیسازی و شبکه
ریسهها، همگامسازی، اجراکنندهها و سوکتهای TCP
- همروندی، موازیسازی و شبکه ریسه در برابر فرایند، حالت مشترک و قفل، صف امن، اجراکنندهها و سوکت TCP با یک پروتکل کوچک واقعی. ۳۵ دقیقه
- ریسهها و قفلها چرخهٔ عمر ریسه، مسابقهٔ دادهای، Lock و قانونِ «کمترین حالت مشترک». ۹ دقیقه
- اجراکنندهها و صفها queue.Queue، تولیدکننده/مصرفکننده و ThreadPoolExecutor با مثال دانلود موازی. ۹ دقیقه
- سوکت و TCP چرخهٔ سوکت TCP، بایت در برابر رشته، مرز پیام و تفاوت TCP و UDP. ۱۰ دقیقه
- شمارندهٔ امن در چهار ریسه چهار ریسه هر کدام ۱۰۰۰۰ بار شمارنده را زیاد میکنند؛ بدون قفل چه میشود و با قفل چه؟ ۱۲ دقیقه
- پروتکل اکوی کوچک با سوکت سرور اکویی بساز که پیام فارسی را بگیرد و با پیشوند echo برگرداند؛ مرز پیام را هم حل کن. ۱۵ دقیقه
- تمرین همروندی و شبکه پنج پرسش از مسابقهٔ دادهای، GIL، صف، Executor و سوکت با پاسخ تشریحی. ۱۲ دقیقه
- بخش ۱۲
بازتاب و مباحث تکمیلی
دروننگری، تزئینکنندهها، بستارها و enum
- بازتاب و مباحث تکمیلی دروننگری با type و inspect، اعلانها بهمثابه فراداده، تزئینکنندهها، بستارها و enum. ۲۵ دقیقه
- دروننگری و inspect جعبهابزار بازتاب: type، isinstance، hasattr، getattr، dir و ماژول inspect. ۷ دقیقه
- تزئینکنندهها و بستارها nonlocal، کارخانهٔ تابع، دکوراتور با آرگومان و قانون wraps. ۹ دقیقه
- شمارشها (enum) enum.Enum، auto، رفتار در مقایسه و انتخاب در برابر رشته و ثابت. ۶ دقیقه
- رجیستری دستور با دکوراتور سیستمی بساز که هر تابعِ دارای دکوراتور register خودکار دستورِ برنامه شود و راهنما از امضاها ساخته شود. ۱۲ دقیقه
- تمرین بازتاب و مباحث تکمیلی چهار پرسش از getattr، بستار، wraps و enum با پاسخ تشریحی. ۱۰ دقیقه
- بخش ۱۳
مرور، حل مسئله و پروژه
تمرینهای ترکیبی، ردیابی کد و پروژهٔ پایانی
- مرور، حل مسئله و پروژه جمعبندی کل مسیر: ردیابی کد، اشکالزدایی، تصمیم طراحی و پروژهٔ پایانی فروشگاه. ۴۰ دقیقه
- فروشگاه کوچک (پروژهٔ پایانی) فروشگاه بساز: کاتالوگ، سبد با تخفیف راهبردی، ذخیرهٔ JSON، تست سبز و گزارش همروند امن. ۲۵ دقیقه
- تمرین جامع پایانی شش پرسش ترکیبی از کل دوره: ردیابی، طراحی، استثنا، کالکشن، همروندی و شبکه. ۱۵ دقیقه