اپلیکیشن اندرویدی فلشکارت آموزشی مقدمهای بر Type Hinting و MyPy در پایتون
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره مقدمهای بر Type Hinting و MyPy در پایتون
موضوع کلی: برنامه نویسی
موضوع میانی: پایتون (Python)
📋 سرفصلهای دوره
- 1. مقدمهای بر برنامهنویسی و مفهوم تایپینگ
- 2. تایپینگ پویا (Dynamic Typing) در پایتون
- 3. مزایا و معایب تایپینگ پویا
- 4. تایپینگ ایستا (Static Typing) چیست؟
- 5. چرا به Type Hinting در پایتون نیاز داریم؟
- 6. معرفی MyPy: یک Static Type Checker برای پایتون
- 7. تفاوت بین Type Hinting و Type Checking
- 8. آمادهسازی محیط توسعه: نصب پایتون و MyPy
- 9. اجرای اولین بررسی نوع با MyPy
- 10. مبانی Type Hinting: انواع داده اولیه (int, str, float, bool)
- 11. راهنمای نوع برای متغیرها
- 12. راهنمای نوع برای آرگومانهای تابع
- 13. راهنمای نوع برای مقدار بازگشتی تابع
- 14. استفاده از `None` در Type Hinting
- 15. نوع خاص `Any`: چه زمانی و چگونه استفاده کنیم
- 16. معرفی ماژول `typing`
- 17. راهنمای نوع برای لیستها: `typing.List`
- 18. راهنمای نوع برای تاپلها: `typing.Tuple`
- 19. راهنمای نوع برای دیکشنریها: `typing.Dict`
- 20. راهنمای نوع برای مجموعهها: `typing.Set`
- 21. استفاده از انواع داخلی به جای `typing` (پایتون 3.9+)
- 22. نوع `Optional`: برای مقادیری که میتوانند `None` باشند
- 23. نوع `Union`: برای مقادیری با چند نوع ممکن
- 24. تفاوت `Union[str, None]` و `Optional[str]`
- 25. عملگر `|` به عنوان جایگزین `Union` (پایتون 3.10+)
- 26. راهنمای نوع برای لیستهای تودرتو
- 27. راهنمای نوع برای دیکشنریهای پیچیده
- 28. استفاده از کلاسها به عنوان راهنمای نوع
- 29. مفهوم Forward References و کاربرد آن
- 30. نصب و اجرای MyPy از طریق خط فرمان
- 31. تحلیل خطاهای رایج MyPy: خطای نوع آرگومان
- 32. تحلیل خطاهای رایج MyPy: خطای نوع مقدار بازگشتی
- 33. فایل پیکربندی `mypy.ini`: مقدمات
- 34. پیکربندی سطح سختگیری (Strict Mode) در MyPy
- 35. چگونه خطاها را با `# type: ignore` نادیده بگیریم
- 36. استفاده از `# type: ignore` با کدهای خطای خاص
- 37. مفهوم Stub Files (`.pyi`) و کاربرد آنها
- 38. پروژه `typeshed`: منبع Stubهای استاندارد
- 39. ایجاد Type Alias با استفاده از `TypeAlias`
- 40. راهنمای نوع در کلاسها: متدها و `self`
- 41. راهنمای نوع برای متدهای کلاس (`@classmethod`) و `cls`
- 42. راهنمای نوع برای متدهای استاتیک (`@staticmethod`)
- 43. راهنمای نوع برای propertyها
- 44. راهنمای نوع و وراثت (Inheritance)
- 45. مقدمهای بر Generics و `TypeVar`
- 46. ایجاد توابع Generic با `TypeVar`
- 47. ایجاد کلاسهای Generic با `TypeVar`
- 48. محدود کردن `TypeVar` (Constrained TypeVars)
- 49. محدود کردن `TypeVar` با Bound
- 50. `Callable`: راهنمای نوع برای توابع و اشیاء قابل فراخوانی
- 51. تعریف امضای دقیق توابع با `Callable`
- 52. `Literal`: محدود کردن مقادیر به چند گزینه خاص
- 53. `Final`: تعریف متغیرها و متدهای غیرقابل تغییر
- 54. `ClassVar`: تعریف متغیرهای سطح کلاس
- 55. `Protocol`: پیادهسازی تایپینگ اردکی (Structural Subtyping)
- 56. تعریف یک Protocol ساده
- 57. استفاده از `@runtime_checkable` برای Protocolها
- 58. `TypedDict`: تعریف ساختار دقیق برای دیکشنریها
- 59. `NamedTuple` و `typing.NamedTuple` برای ساختارهای دادهای
- 60. `NewType`: ایجاد انواع متمایز از انواع موجود
- 61. راهنمای نوع برای ژنراتورها (Generators) با `Generator`
- 62. راهنمای نوع برای Context Manager ها
- 63. راهنمای نوع برای توابع `async` و `await`
- 64. استفاده از `Coroutine` و `Awaitable`
- 65. راهنمای نوع برای دکوراتورها (Decorators)
- 66. مقدمهای بر `ParamSpec` برای دکوراتورها
- 67. استفاده از `Concatenate` به همراه `ParamSpec`
- 68. مفهوم `TypeGuard` برای محدود کردن انواع در زمان اجرا
- 69. پیادهسازی یک `TypeGuard` ساده
- 70. راهنمای نوع برای توابع با تعداد آرگومان متغیر (`*args` و `**kwargs`)
- 71. استفاده از `Unpack` برای `*args` و `**kwargs` (پایتون 3.11+)
- 72. مفهوم Variance: Covariance و Contravariance
- 73. کاربرد `TypeVar` با `covariant=True`
- 74. کاربرد `TypeVar` با `contravariant=True`
- 75. نوع `NoReturn`: برای توابعی که هرگز باز نمیگردند
- 76. نوع `ContextManager` از ماژول `typing`
- 77. راهنمای نوع برای متدهای خاص (مانند `__init__` و `__str__`)
- 78. استفاده از MyPy در ویرایشگرهای کد (مانند VS Code)
- 79. یکپارچهسازی MyPy با ابزارهای CI/CD (مانند GitHub Actions)
- 80. استراتژیهای افزودن Type Hint به پروژههای موجود
- 81. استفاده از ابزار `pytype` برای استنتاج خودکار انواع
- 82. استفاده از ابزار `MonkeyType` برای تولید انواع از تستها
- 83. تأثیر Type Hinting بر عملکرد (Performance) برنامه
- 84. استفاده از Type Hintها برای تولید مستندات خودکار (با Sphinx)
- 85. اشتباهات متداول در استفاده از Type Hinting
- 86. چالشهای کار با کتابخانههایی که Type Hint ندارند
- 87. چگونه برای کتابخانههای شخص ثالث Stub بنویسیم
- 88. راهنمای نوع برای کار با فایلها (`IO` و `TextIO`)
- 89. راهنمای نوع در پروژههای Django
- 90. راهنمای نوع در فریمورک FastAPI
- 91. راهنمای نوع در کار با دیتابیسها و ORMها
- 92. مفهوم Type Narrowing (تحدید نوع)
- 93. راهنمای نوع برای کار با JSON
- 94. بررسی افزونههای MyPy (MyPy Plugins)
- 95. نوشتن یک افزونه ساده برای MyPy
- 96. مقایسه MyPy با ابزارهای دیگر (Pyright, Pyre)
- 97. آینده تایپینگ در پایتون و PEPهای جدید
- 98. جمعبندی مفاهیم کلیدی دوره
- 99. پروژه عملی: بازسازی یک کدبیس بدون نوع به همراه Type Hint
- 100. مرور و تحلیل پروژه عملی
این اپلیکیشن فارسی برای یادگیری و مرور محتوای آموزشی از طریق فلشکارت طراحی شده است. کارتها را یکییکی مرور کنید، پاسخ پرسشها را به یاد بیاورید و نتیجه هر پاسخ را ثبت کنید. محتوای دوره پس از نصب درون برنامه در دسترس است تا برای مطالعه روزمره معمولاً به اتصال مداوم اینترنت نیاز نداشته باشید.
محتوای آموزشی در قالبهای متنوع ارائه میشود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموختهها قابل استفاده باشد.
- رابط کاربری فارسی و راستچین با فونت وزیر.
- تم روشن و تیره مطابق تنظیمات سیستم.
- صفحهبندی ساده برای انتخاب دوره و شروع مرور.
- نمایش تعداد دفعات مرور هر فصل.
- انتخاب چند فصل برای مرور همزمان.
- امکان تمرکز بر فصلهایی که هنوز مرور نشدهاند.
این اپلیکیشن برای دانشآموزان، دانشجویان، داوطلبان آزمونها و علاقهمندان به یادگیری طراحی شده است؛ بهویژه کسانی که میخواهند مطالب آموزشی را در زمانهای کوتاه مرور کنند، دانستههای خود را بسنجند و مطالعه منظمتری داشته باشند.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.