diff --git a/_static/pages/01-python-introduction.jpg b/_static/pages/01-python-introduction.jpg new file mode 100644 index 0000000..72c451e Binary files /dev/null and b/_static/pages/01-python-introduction.jpg differ diff --git a/_static/pages/02-python-setup.jpg b/_static/pages/02-python-setup.jpg new file mode 100644 index 0000000..cb665e6 Binary files /dev/null and b/_static/pages/02-python-setup.jpg differ diff --git a/_static/pages/03-python-project-structure.jpg b/_static/pages/03-python-project-structure.jpg new file mode 100644 index 0000000..14b13a3 Binary files /dev/null and b/_static/pages/03-python-project-structure.jpg differ diff --git a/_static/pages/04-python-interactive-mode.jpg b/_static/pages/04-python-interactive-mode.jpg new file mode 100644 index 0000000..ff5a93a Binary files /dev/null and b/_static/pages/04-python-interactive-mode.jpg differ diff --git a/_static/pages/05-python-object-oriented-programming-concept.jpg b/_static/pages/05-python-object-oriented-programming-concept.jpg new file mode 100644 index 0000000..f455f3a Binary files /dev/null and b/_static/pages/05-python-object-oriented-programming-concept.jpg differ diff --git a/_static/pages/06-python-syntax.jpg b/_static/pages/06-python-syntax.jpg new file mode 100644 index 0000000..417cfe4 Binary files /dev/null and b/_static/pages/06-python-syntax.jpg differ diff --git a/_static/pages/07-python-built-in-data-types-1.jpg b/_static/pages/07-python-built-in-data-types-1.jpg new file mode 100644 index 0000000..ceb4e70 Binary files /dev/null and b/_static/pages/07-python-built-in-data-types-1.jpg differ diff --git a/_static/pages/08-python-built-in-data-types-2.jpg b/_static/pages/08-python-built-in-data-types-2.jpg new file mode 100644 index 0000000..5785200 Binary files /dev/null and b/_static/pages/08-python-built-in-data-types-2.jpg differ diff --git a/_static/pages/09-python-if-else-for-while.jpg b/_static/pages/09-python-if-else-for-while.jpg new file mode 100644 index 0000000..a109a1b Binary files /dev/null and b/_static/pages/09-python-if-else-for-while.jpg differ diff --git a/_static/pages/10-python-input-output-file.jpg b/_static/pages/10-python-input-output-file.jpg new file mode 100644 index 0000000..d0c9d57 Binary files /dev/null and b/_static/pages/10-python-input-output-file.jpg differ diff --git a/_static/pages/11-python-os-path-math.jpg b/_static/pages/11-python-os-path-math.jpg new file mode 100644 index 0000000..37e831a Binary files /dev/null and b/_static/pages/11-python-os-path-math.jpg differ diff --git a/_static/pages/12-python-function.jpg b/_static/pages/12-python-function.jpg new file mode 100644 index 0000000..3d6942b Binary files /dev/null and b/_static/pages/12-python-function.jpg differ diff --git a/_static/pages/13-python-function-decorator-generator-coroutine-lambda.jpg b/_static/pages/13-python-function-decorator-generator-coroutine-lambda.jpg new file mode 100644 index 0000000..6c00feb Binary files /dev/null and b/_static/pages/13-python-function-decorator-generator-coroutine-lambda.jpg differ diff --git a/_static/pages/14-python-function-recursive-memoization.jpg b/_static/pages/14-python-function-recursive-memoization.jpg new file mode 100644 index 0000000..eb841fe Binary files /dev/null and b/_static/pages/14-python-function-recursive-memoization.jpg differ diff --git a/_static/pages/15-python-regex-1.jpg b/_static/pages/15-python-regex-1.jpg new file mode 100644 index 0000000..f961315 Binary files /dev/null and b/_static/pages/15-python-regex-1.jpg differ diff --git a/_static/pages/16-python-regex-re.jpg b/_static/pages/16-python-regex-re.jpg new file mode 100644 index 0000000..f8c6046 Binary files /dev/null and b/_static/pages/16-python-regex-re.jpg differ diff --git a/_static/pages/17-python-object-oriented-programming-class-object.jpg b/_static/pages/17-python-object-oriented-programming-class-object.jpg new file mode 100644 index 0000000..2438be0 Binary files /dev/null and b/_static/pages/17-python-object-oriented-programming-class-object.jpg differ diff --git a/_static/pages/18-python-object-oriented-programming-inheritance-mro-mixin.jpg b/_static/pages/18-python-object-oriented-programming-inheritance-mro-mixin.jpg new file mode 100644 index 0000000..f561f39 Binary files /dev/null and b/_static/pages/18-python-object-oriented-programming-inheritance-mro-mixin.jpg differ diff --git a/_static/pages/19-python-object-oriented-programming-abstraction-metaclass.jpg b/_static/pages/19-python-object-oriented-programming-abstraction-metaclass.jpg new file mode 100644 index 0000000..ff023c0 Binary files /dev/null and b/_static/pages/19-python-object-oriented-programming-abstraction-metaclass.jpg differ diff --git a/_static/pages/20-python-object-oriented-programming-polymorphism-encapsulation.jpg b/_static/pages/20-python-object-oriented-programming-polymorphism-encapsulation.jpg new file mode 100644 index 0000000..7c409c3 Binary files /dev/null and b/_static/pages/20-python-object-oriented-programming-polymorphism-encapsulation.jpg differ diff --git a/_static/pages/21-python-object-oriented-programming-property-descriptors.jpg b/_static/pages/21-python-object-oriented-programming-property-descriptors.jpg new file mode 100644 index 0000000..122bb45 Binary files /dev/null and b/_static/pages/21-python-object-oriented-programming-property-descriptors.jpg differ diff --git a/_static/pages/22-python-object-oriented-programming-type-hinting-data-class.jpg b/_static/pages/22-python-object-oriented-programming-type-hinting-data-class.jpg new file mode 100644 index 0000000..ed14ec3 Binary files /dev/null and b/_static/pages/22-python-object-oriented-programming-type-hinting-data-class.jpg differ diff --git a/donate-report.rst b/donate-report.rst index 8736534..c9a9a83 100644 --- a/donate-report.rst +++ b/donate-report.rst @@ -25,6 +25,14 @@ +| + +**سال 1399: 652,222 تومان** + +| + + + .. raw:: html diff --git a/lessons/l01.rst b/lessons/l01.rst index 5605bf7..a605d54 100644 --- a/lessons/l01.rst +++ b/lessons/l01.rst @@ -6,10 +6,17 @@ -درس ۰۱: آشنایی با پایتون -======================== +درس ۰۱: آشنایی با زبان برنامه‌نویسی پایتون +================================================= -این درس با بیان تاریخچه ایجاد پایتون شروع و با توصیفی کوتاه و شرح ویژگی‌های آن ادامه می‌یابد؛ در شرح ویژگی‌ها سعی شده است کمی نیز توضیحات غیرپایتونی برای درک بهتر موضوعات ارایه گردد. همچنین در مورد کارایی پایتون و این موضوع که چرا در حال حاضر دو شاخه متفاوت از این زبان وجود دارد نیز صحبت شده است. هدف این درس ایجاد یک پیش‌زمینه‌ بدون ابهام از پایتون است! به این امید که مفید باشد و بتواند شما را به یادگیری این زبان تشویق کند :emoji-size:`😉`. +.. figure:: /_static/pages/01-python-introduction.jpg + :align: center + :alt: آشنایی با زبان برنامه نویسی پایتون + + Photo by `Michael Olsen `__ + + +این درس با بیان تاریخچه ایجاد **زبان برنامه‌نویسی پایتون** شروع و با توصیفی کوتاه و شرح ویژگی‌های آن ادامه می‌یابد؛ در شرح ویژگی‌ها سعی شده است کمی نیز توضیحات غیرپایتونی برای درک بهتر موضوعات ارایه گردد. همچنین در مورد کارایی پایتون و این موضوع که چرا در حال حاضر دو شاخه متفاوت از این زبان وجود دارد نیز صحبت شده است. هدف این درس ایجاد یک پیش‌زمینه‌ بدون ابهام از پایتون است! به این امید که مفید باشد و بتواند شما را به یادگیری این زبان تشویق کند :emoji-size:`😉`. :emoji-size:`✔` سطح: پایه @@ -153,6 +160,7 @@ CPython (سی‌پایتون) پیاده‌سازی استاندارد و اصل پی‌نوشت -------- + .. [#f1] برگرفته از نوشته‌های وبلاگ [`The History of Python `_] و همینطور مصاحبه‌ [`The Making of Python `__] .. [#f2] ”...در دسامبر سال ۱۹۸۹ دنبال یک پروژه‌ برنامه‌نویسی به عنوان سرگرمی می‌گشتم تا اوقات فراغت به وجود آمده از تعطیلات کریسمس را پر کنم. دفتر کارم (یک آزمایشگاه تحقیقاتی دولتی در آمستردام) بسته بود، ولی یک رایانه‌ شخصی داشتم و چیزی بیش از این هم در اختیارم نبود. تصمیم گرفتم تا مفسری برای یک زبان اسکریپتی جدید بنویسم. قبلا در مورد آن فکر کرده بودم: از نسل زبان ABC و جذاب برای هکرهای Unix/C. نام پایتون را برای عنوان کاری این پروژه انتخاب کردم، کمی گستاخانه ( و یک طرفدار بزرگ Monty Python’s Flying Circus)...“ - نقل از آقای روسوم [`منبع `_] @@ -192,6 +200,7 @@ CPython (سی‌پایتون) پیاده‌سازی استاندارد و اصل :emoji-size:`😊` امیدوارم مفید بوده باشه `لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. `_ + diff --git a/lessons/l02.rst b/lessons/l02.rst index 4a3ac97..cfa986c 100644 --- a/lessons/l02.rst +++ b/lessons/l02.rst @@ -9,7 +9,14 @@ درس ۰۲: نصب و راه‌اندازی پایتون ================================ -در این درس به چگونگی نصب و راه‌اندازی پایتون در دو سیستم عامل ویندوز و گنولینوکس پرداخته و در پایان نیز توضیح مختصری از «سیستم مدیریت بسته» پایتون ارایه شده است. +.. figure:: /_static/pages/02-python-setup.jpg + :align: center + :alt: نصب و راه‌اندازی پایتون + + Photo by `Bermix Studio `__ + + +در این درس به چگونگی نصب و راه‌اندازی محیط اجرای زبان برنامه‌نویسی پایتون در دو سیستم عامل ویندوز و گنولینوکس پرداخته و در پایان نیز توضیح مختصری از «سیستم مدیریت بسته» پایتون ارایه شده است. :emoji-size:`✔` سطح: پایه @@ -368,4 +375,3 @@ pip از زمان انتشار نسخه‌ 3.4 به بسته‌ نصبی پای `لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. `_ - diff --git a/lessons/l03.rst b/lessons/l03.rst index a10cd34..2d51160 100644 --- a/lessons/l03.rst +++ b/lessons/l03.rst @@ -8,6 +8,12 @@ درس ۰۳: چگونگی ایجاد و اجرای یک پروژه پایتون ============================================= +.. figure:: /_static/pages/03-python-project-structure.jpg + :align: center + :alt: چگونگی ایجاد و اجرای یک پروژه پایتون + + Photo by `Sam Moqadam `__ + این درس به چگونگی ایجاد پروژه‌‌های برنامه‌نویسی پایتون و اجرای آن‌ها اختصاص یافته است. درس با بیان تعاریف و رسم ساختار معمول یک پروژه شروع و اشاره‌ای نیز به ساختار پروژه‌های قابل انتشار در PyPI می‌شود. در بخش یکم تلاش شده است که تصویر کاملی از ساختار یک پروژه در ذهن خواننده ایجاد و از این طریق او با تعاریف «بسته»، «ماژول» و «اسکریپت» در زبان پایتون آشنا شود. در دو بخش‌ بعدی نیز ضمن اشاره به دو شیوه‌ اجرای دستورات پایتون، به شیوه ایجاد اسکریپت و چگونگی اجرای آن تمرکز شده است؛ چرا که پروژه‌های پایتون به این شیوه اجرا می‌گردند. در ادامه هم به روند اجرای کد توسط مفسر پایتون و همچنین معرفی بایت‌کد توجه و در نهایت نیز به معرفی virtualenv و pyvenv پرداخته شده است. :emoji-size:`✔` سطح: پایه @@ -439,4 +445,7 @@ pyvenv `لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. `_ + + + diff --git a/lessons/l04.rst b/lessons/l04.rst index c272a8d..16841e6 100644 --- a/lessons/l04.rst +++ b/lessons/l04.rst @@ -9,6 +9,15 @@ درس ۰۴: برنامه‌نویسی تعاملی با پایتون ====================================== + +.. figure:: /_static/pages/04-python-interactive-mode.jpg + :align: center + :alt: برنامه‌نویسی تعاملی با پایتون (interactive) + + Photo by `Anton Maksimov juvnsky `__ + + + در این درس به توضیح حالت تعاملی پایتون می‌پردازیم؛ اینکه چگونه وارد یا خارج شویم، کد بنویسیم یا در مورد چیزی در این زبان راهنمایی بگیریم. پس از مطالعه درس پیش و دو بخش ابتدایی این درس، با اجرای اسکریپت و حالت تعاملی پایتون آشنا شده‌اید؛ بر همین اساس در بخش سوم این درس به توضیح گزینه‌های مورد کاربرد در فراخوانی مفسر پایتون می‌پردازیم که به نوعی به هر دو مبحث یاد شده مربوط می‌شوند. این درس پر از مطالبی است که در آینده سر نوبت(!) بررسی خواهند شد (مانند مفهوم **شی**) البته برای درک موضوعات، توضیح کوتاهی ارایه شده ولی بهتر است متمرکز به موضوعات اصلی خود درس باشید و زیاد درگیر آن‌ها نشوید؛ فقط به خاطر بسپارید! :emoji-size:`✔` سطح: پایه diff --git a/lessons/l05.rst b/lessons/l05.rst index d3482ee..9e40657 100644 --- a/lessons/l05.rst +++ b/lessons/l05.rst @@ -7,7 +7,15 @@ درس ۰۵: مفهوم شی‌گرایی ======================== -این درس به توضیح مفاهیم پایه «برنامه‌نویسی شی‌گرا» اختصاص یافته است و آخرین درس از سطح‌بندی «پایه» در این کتاب می‌باشد. هدف از این درس آشنایی خوانندگان با مفاهیم عمومی شی‌گرایی بوده و نه آموزش آن؛ جزییات بیشتر از برنامه‌نویسی شی‌گرا به همراه آموزش پیاده‌سازی مفاهیم آن در زبان پایتون از درس هفدهم به بعد بررسی خواهد شد. در این درس همچنین به ساختار اشیا و کلاس‌ها در زبان پایتون اشاره‌ شده است که پیش‌نیاز دروس آتی خواهد بود. + + +.. figure:: /_static/pages/05-python-object-oriented-programming-concept.jpg + :align: center + :alt: مفهوم شی گرایی (Object-Oriented Programming) + + Photo by `Lucas Benjamin `__ + +این درس به توضیح مفاهیم پایه «برنامه‌نویسی شی‌گرا» (Object-Oriented Programming) اختصاص یافته است و آخرین درس از سطح‌بندی «پایه» در این کتاب می‌باشد. هدف از این درس آشنایی خوانندگان با مفاهیم عمومی شی‌گرایی بوده و نه آموزش آن؛ جزییات بیشتر از برنامه‌نویسی شی‌گرا به همراه آموزش پیاده‌سازی مفاهیم آن در زبان پایتون از درس هفدهم به بعد بررسی خواهد شد. در این درس همچنین به ساختار اشیا و کلاس‌ها در زبان پایتون اشاره‌ شده است که پیش‌نیاز دروس آتی خواهد بود. :emoji-size:`✔` سطح: پایه diff --git a/lessons/l06.rst b/lessons/l06.rst index 6b717bb..e0868ab 100644 --- a/lessons/l06.rst +++ b/lessons/l06.rst @@ -8,6 +8,13 @@ درس ۰۶: سینتکس یا دستور نحو زبان پایتون ========================================== + +.. figure:: /_static/pages/06-python-syntax.jpg + :align: center + :alt: سینتکس یا دستور نحو زبان پایتون + + Photo by `Tim J `__ + در این درس به معرفی اجزای پایه در برنامه‌نویسی پایتون پرداخته شده و اینکه چه هستند، چه گرامری دارند، چه کاری انجام می‌دهند یا... مورد بررسی قرار گرفته است. همچنین در موارد بسیاری نکته‌هایی از شیوه استاندارد پایتون‌نویسی که توسط سند `PEP 8 `__ به برنامه‌نویسان پایتون پیشنهاد می‌شود نیز آورده شده است؛ رعایت این اصول به یکدستی کدهای جامعه پایتون کمک می‌کند. سینتکس (`Syntax `_ یا دستور نحو) مجموعه‌ای از قواعد است که چگونگی برنامه‌نویسی به یک زبان مشخص را تعریف می‌کند؛ برای نمونه اینکه یک متن چطور نوشته شود که توسط مفسر پایتون به عنوان توضیح در نظر گرفته شود یا یک شی رشته، به رعایت سینتکس تعریف شده در پایتون بستگی دارد و چنانچه مفسر نتواند متن را با هیچ قاعده‌ تعریف شده‌ای مطابقت دهد یک استثنا گزارش خواهد شد. سینتکس پایتون تنها محدود به این درس نیست و موارد بسیار دیگری به مانند چگونگی تعریف اشیا گوناگون را در طی درس‌های آتی مشاهده خواهید کرد. diff --git a/lessons/l07.rst b/lessons/l07.rst index b75f88c..ac60f89 100644 --- a/lessons/l07.rst +++ b/lessons/l07.rst @@ -5,8 +5,15 @@ :keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, انواع شی, انواع داده, انواع شی در پایتون, انواع داده در پایتون, نوع صحیح, نوع ممیز شناور, نوع مختلط, نوع دسیمال, نوع کسری, نوع بولی, نوع رشته, رشته‌ها در پایتون, قالب بندی رشته, توابع رشته در پایتون -درس ۰۷: انواع داده یا شی در پایتون: بخش ۱ -========================================== +درس ۰۷: انواع داده یا شی در پایتون: عددی و رشته +=========================================================== + +.. figure:: /_static/pages/07-python-built-in-data-types-1.jpg + :align: center + :alt: انواع داده یا شی در پایتون: عددی و رشته + + Photo by `Kristian Strand `__ + پایتون هر «نوع داده» (Data Type) را توسط یک کلاس ارایه می‌دهد؛ بنابراین هر داده یک نمونه یا یک شی از کلاسی مشخص است. هر چند برنامه‌نویس نیز می‌تواند با تعریف کلاس، نوع دلخواه خود را داشته باشد ولی در این درس می‌خواهیم درباره آن بخشی از انواع داده یا انواع شی‌ای که به شکل آماده (Built-in) در اختیار مفسر زبان پایتون قرار داده شده است صحبت کنیم. diff --git a/lessons/l08.rst b/lessons/l08.rst index e8a4246..400aa45 100644 --- a/lessons/l08.rst +++ b/lessons/l08.rst @@ -5,8 +5,15 @@ :keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, انواع شی, انواع داده, انواع شی در پایتون, انواع داده در پایتون, پایتون -درس ۰۸: انواع داده یا شی در پایتون: بخش ۲ -=========================================== +درس ۰۸: انواع داده یا شی در پایتون: set ،dict ،tuple، list و None +==================================================================================== + +.. figure:: /_static/pages/08-python-built-in-data-types-2.jpg + :align: center + :alt: انواع داده یا شی در پایتون: set ،dict ،tuple، list و None + + Photo by `Natalia Y `__ + پایتون هر «نوع داده» (Data Type) را توسط یک کلاس ارایه می‌دهد؛ بنابراین هر داده یک نمونه یا یک شی از کلاسی مشخص است. هر چند برنامه‌نویس نیز می‌تواند با تعریف کلاس، نوع دلخواه خود را داشته باشد ولی در این درس می‌خواهیم درباره آن بخشی از انواع داده یا انواع شی‌ (Object Types) که به شکل آماده (Built-in) در اختیار مفسر زبان پایتون قرار داده شده است صحبت کنیم. diff --git a/lessons/l09.rst b/lessons/l09.rst index 5ed64fc..1d2f5c0 100644 --- a/lessons/l09.rst +++ b/lessons/l09.rst @@ -8,6 +8,14 @@ درس ۰۹: دستورهای کنترلی در پایتون ================================== +.. figure:: /_static/pages/09-python-if-else-for-while.jpg + :align: center + :alt: دستورهای کنترلی در پایتون + + Photo by `Lynda Sanchez `__ + + + در حالت عادی جریان اجرای یک برنامه روند ثابتی دارد به این شکل که کدها سطر به سطر، از بالا به پایین خوانده و اجرا می‌شوند؛ دستورهای کنترلی امکانی برای کنترل یا تغییر این جریان ثابت است. با استفاده از این دستورها می‌توان برای اجرای یک بلاک شرط تعیین کرد که اگر در زمان اجرا این شرط برقرار نباشد از اجرای بلاک صرف نظر خواهد شد یا می‌توان شرایطی را به وجود آورد که اجرای یک بلاک را از میان چندین بلاک مشخص انتخاب گردد و همچنین می‌توان اجرای یک بلاک را چندین بار تکرار کرد. این درس به بررسی دستورهای کنترلی پایتون در دو بخش «انتخاب» و «تکرار» اختصاص یافته است. diff --git a/lessons/l10.rst b/lessons/l10.rst index adff2a1..38e795e 100644 --- a/lessons/l10.rst +++ b/lessons/l10.rst @@ -8,6 +8,14 @@ درس ۱۰: فایل، ورودی و خروجی در پایتون ======================================== +.. figure:: /_static/pages/10-python-input-output-file.jpg + :align: center + :alt: فایل، ورودی و خروجی در پایتون - input, print, file + + Photo by `Mr Cup / Fabien Barral `__ + + + موضوع این درس به چگونگی دریافت یا خواندن داده‌ها از کاربر حالت تعاملی یا فایل‌ها و همچنین نمایش یا نوشتن در آن‌ها اختصاص یافته است؛ بر همین اساس در متن درس به بررسی شی فایل و تابع‌های آماده ``()print`` و ``()input`` در پایتون پرداخته خواهد شد. به برخی از تفاوت‌ها در پیاده‌سازی نسخه جدید پایتون (شاخه 3x) که به موضوع این درس مربوط می‌باشند نیز اشاره شده است. diff --git a/lessons/l11.rst b/lessons/l11.rst index 9ace18c..110860a 100644 --- a/lessons/l11.rst +++ b/lessons/l11.rst @@ -8,6 +8,12 @@ درس ۱۱: کتابخانه استاندارد پایتون: math و os ================================================ +.. figure:: /_static/pages/11-python-os-path-math.jpg + :align: center + :alt: کتابخانه استاندارد پایتون: math و os + + Photo by `Yousef Espanioly `__ + کتابخانه استاندارد پایتون مجموعه‌ وسیعی از امکانات آماده است که با نصب پایتون در اختیار قرار می‌گیرد. فهرست کامل این امکانات را می‌توانید از نشانی‌های `(پایتون 2x) `_ و `(پایتون 3x) `_ مشاهده نمایید. لازم به یادآوری است که بخشی بزرگی از قدرت پایتون به دلیل وجود کتابخانه‌های فراوان و قدرتمند آن است که تعداد زیادی از آن‌ها خارج کتابخانه استاندارد پایتون و درون جامعه کاربری در حال توسعه هستند که فهرست تقریبا کاملی از آن‌ها نیز توسط `PyPI `_ قابل جستجو و دریافت هستند. این درس به عنوان آخرین درس از سطح مقدماتی کتاب به بررسی بخشی از امکان‌های کاربردی این کتابخانه اختصاص یافته است که البته ممکن است در طول درس‌های گذشته از آن‌ها استفاده کرده باشیم!. diff --git a/lessons/l12.rst b/lessons/l12.rst index 1b1f7fe..604c179 100644 --- a/lessons/l12.rst +++ b/lessons/l12.rst @@ -8,7 +8,13 @@ درس ۱۲: تابع در پایتون: تعریف، ارسال و تطابق آرگومان‌ها =========================================================== -این درس به معرفی مفهوم تابع در زبان برنامه‌نویسی پایتون می‌پردازد. +.. figure:: /_static/pages/12-python-function.jpg + :align: center + :alt: تابع در پایتون: تعریف، ارسال و تطابق آرگومان‌ها + + Photo by `Josue Isai Ramos Figueroa `__ + +این درس به معرفی مفهوم **تابع (Function)** در زبان برنامه‌نویسی پایتون می‌پردازد. diff --git a/lessons/l13.rst b/lessons/l13.rst index cc22d3e..479e0ab 100644 --- a/lessons/l13.rst +++ b/lessons/l13.rst @@ -8,7 +8,13 @@ درس ۱۳: تابع در پایتون: Coroutine ،Generator ،Decorator‌ و lambda ================================================================== -این درس در ادامه درس پیش است که به معرفی مواردی از کاربردهای تابع در ایجاد مفاهیمی جدید، مهم و کاربردی در زبان برنامه‌نویسی پایتون می‌پردازد. مبحث تابع در پایتون با این درس به پایان نمی‌رسد و نکات باقی‌مانده در درس بعدی ارائه می‌شوند. +.. figure:: /_static/pages/13-python-function-decorator-generator-coroutine-lambda.jpg + :align: center + :alt: تابع در پایتون: Coroutine ،Generator ،Decorator‌ و lambda + + Photo by `Bill Oxford `__ + +این درس در ادامه درس پیش است که به معرفی مواردی از کاربردهای تابع در ایجاد مفاهیمی جدید، مهم و کاربردی در زبان برنامه‌نویسی پایتون می‌پردازد، مفاهیمی همچون Coroutine ،Generator ،Decorator‌ و lambda. مبحث تابع در پایتون با این درس به پایان نمی‌رسد و نکات باقی‌مانده در درس بعدی ارائه می‌شوند. diff --git a/lessons/l14.rst b/lessons/l14.rst index ac62f6e..6ae9a3e 100644 --- a/lessons/l14.rst +++ b/lessons/l14.rst @@ -8,7 +8,14 @@ درس ۱۴: تابع در پایتون: تابع بازگشتی (Recursive) و Memoization ============================================================================== -این درس بخش پایانی از بررسی تابع در پایتون می‌باشد و موضوعات باقی‌مانده از مبحث تابع پایتون در این درس بیان می‌شود. + +.. figure:: /_static/pages/14-python-function-recursive-memoization.jpg + :align: center + :alt: تابع در پایتون: تابع بازگشتی (Recursive) و Memoization + + Photo by `Dan Freeman `__ + +این درس بخش پایانی از بررسی تابع در پایتون می‌باشد و به شرح **تابع بازگشتی (Recursive)** و مفهوم **Memoization** در زبان برنامه‌نویسی پایتون خواهد پرداخت. diff --git a/lessons/l15.rst b/lessons/l15.rst index 7300e84..97a8f4b 100644 --- a/lessons/l15.rst +++ b/lessons/l15.rst @@ -8,6 +8,12 @@ درس ۱۵: عبارات با قاعده (Regular Expression) یا RegEx در پایتون ============================================================================ +.. figure:: /_static/pages/15-python-regex-1.jpg + :align: center + :alt: عبارات با قاعده (Regular Expression) یا RegEx در پایتون + + Photo by `Ehud Neuhaus `__ + **عبارات با قاعده** (**Regular expression**) یا به اختصار **RegEx**، رشته‌ای حاوی کاراکترهایی خاص و با معنی است که در عملیات‌هایی مانند یافتن (find)، جاگذاری (repleace) و اعتبارسنجی (validation) به شدت کاربرد پیدا کرده است. در واقع با استفاده از RegEx می‌توان یک الگو (pattern) برای جستجو در متن یا تطابق آن ایجاد کرد. [`ویکی‌پدیا `__] در این درس به شرح قواعد موجود در RegEx و همچنین ماژول ``re`` از کتابخانه استاندارد پایتون خواهیم پرداخت [`اسناد پایتون `__]. ماژول ``re`` یک مجموعه ابزار برای کار با RegEx در پایتون را فراهم آورده است که می‌توان آن را موتور تحلیل RegEx در پایتون دانست. diff --git a/lessons/l16.rst b/lessons/l16.rst index 30b197e..ff5e1dc 100644 --- a/lessons/l16.rst +++ b/lessons/l16.rst @@ -8,7 +8,13 @@ درس ۱۶: کتابخانه استاندارد پایتون: re ============================================================================ -این درس در ادامه درس قبل (پانزدهم) می‌باشد و به شرح برخی از تابع‌های کاربردی موجود در ماژول ``re`` پایتون می‌پردازد. پیش از مطالعه این درس می‌بایست حتما درس قبل را نیز مطالعه کرده باشید. +.. figure:: /_static/pages/16-python-regex-re.jpg + :align: center + :alt: کتابخانه استاندارد پایتون: re + + Photo by `Markus Winkler `__ + +این درس در ادامه درس قبل «عبارات با قاعده یا Regular Expression» می‌باشد و به شرح برخی از تابع‌های کاربردی موجود در ماژول ``re`` از کتابخانه استاندارد زبان برنامه‌نویسی پایتون می‌پردازد. پیش از مطالعه این درس می‌بایست حتما درس قبل را نیز مطالعه کرده باشید. diff --git a/lessons/l17.rst b/lessons/l17.rst index 7953697..1ebe440 100644 --- a/lessons/l17.rst +++ b/lessons/l17.rst @@ -8,7 +8,11 @@ درس ۱۷: شی گرایی (OOP) در پایتون: تعریف کلاس و ایجاد شی ============================================================================ +.. figure:: /_static/pages/17-python-object-oriented-programming-class-object.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: تعریف کلاس و ایجاد شی + Photo by `Sarah Kilian `__ پیش‌تر مفهوم شی‌گرایی شرح داده شده است (درس پنجم). در این درس می‌خواهیم به بررسی چگونگی پیاده‌سازی این مفهوم در زبان برنامه نویسی پایتون بپردازیم. هنگام نگارش این درس فرض بر این بوده است که خوانندگان دروس پیش، بخصوص درس پنجم و دروس مربوط به توابع را مطالعه کرده‌اند. diff --git a/lessons/l18.rst b/lessons/l18.rst index f571f62..4985227 100644 --- a/lessons/l18.rst +++ b/lessons/l18.rst @@ -8,8 +8,13 @@ درس ۱۸: شی گرایی (OOP) در پایتون: وراثت (Inheritance)، Association و Mixin ======================================================================================================== +.. figure:: /_static/pages/18-python-object-oriented-programming-inheritance-mro-mixin.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: وراثت (Inheritance)، Association و Mixin + Photo by `Vidar Nordli-Mathisen `__ + این درس در ادامه درس پیش می‌باشد و به بررسی رابطه بین کلاس‌ها و اشیا می‌پردازد. در درس پنجم مقدمه‌ای از این روابط صحبت شده است و این درس به صورت کامل دو رابطه **IS-A** یا Inheritance و **HAS-A** یا Association در مفهموم شی گرایی و چگونگی پیاده‌سازی آن‌ها در زبان برنامه‌نویسی پایتون را شرح می‌دهد. در این درس همچنین به شرح **وراثت چندگانه (Multiple Inheritance)**، **Method Resolution Order** و کلاس‌های **Mixin** در زبان برنامه‌نویسی پایتون خواهیم پرداخت. diff --git a/lessons/l19.rst b/lessons/l19.rst index d4a7ab5..60e89dc 100644 --- a/lessons/l19.rst +++ b/lessons/l19.rst @@ -8,6 +8,12 @@ درس ۱۹: شی گرایی (OOP) در پایتون: متا کلاس (Metaclass) و انتزاع (Abstraction) ======================================================================================================== +.. figure:: /_static/pages/19-python-object-oriented-programming-abstraction-metaclass.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: متا کلاس (Metaclass) و انتزاع (Abstraction) + + Photo by `Giancarlo Revolledo `__ + این درس در ادامه دروس پیش مرتبط با آموزش شی گرایی در پایتون می‌باشد و به بررسی قابلیت **متا کلاس (Metaclass)** در پایتون می‌پردازد و در ادامه یکی دیگر از مفاهیم اصلی برنامه‌نویسی شی گرا به نام **انتزاع (Abstraction)** را معرفی و چگونگی پیاده‌سازی آن در زبان برنامه‌نویسی پایتون را بررسی خواهیم کرد. diff --git a/lessons/l20.rst b/lessons/l20.rst index 2e58820..b394a34 100644 --- a/lessons/l20.rst +++ b/lessons/l20.rst @@ -8,6 +8,12 @@ درس ۲۰: شی گرایی (OOP) در پایتون: Encapsulation و چندریختی (Polymorphism) =================================================================================================== +.. figure:: /_static/pages/20-python-object-oriented-programming-polymorphism-encapsulation.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: Encapsulation و چندریختی (Polymorphism) + + Photo by `sanjiv nayak `__ + این درس در ادامه دروس گذشته مرتبط با آموزش شی گرایی در زبان برنامه‌نویسی پایتون می‌باشد. تاکنون با دو تا از چهار مفهوم مهم در شی‌گرایی آشنا شده‌ایم: **وراثت (Inheritance)** - درس هجدهم و **انتزاع (Abstraction)** - درس نوزدهم. این درس به بررسی دو مورد باقی‌مانده، یعنی **کپسوله‌سازی (Encapsulation)** و **چندریختی (Polymorphism)** در زبان برنامه‌نویسی پایتون می‌پردازد. توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین همانند دروس پیش شی گرایی و به منظور جلوگیری از پیچیدگی‌های غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارائه می‌شود. diff --git a/lessons/l21.rst b/lessons/l21.rst index 53a5d66..d3de565 100644 --- a/lessons/l21.rst +++ b/lessons/l21.rst @@ -8,6 +8,12 @@ درس ۲۱: شی گرایی (OOP) در پایتون: __Descriptors ،Decorator ،__slots و property@ =================================================================================================== +.. figure:: /_static/pages/21-python-object-oriented-programming-property-descriptors.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: __Descriptors ،Decorator ،__slots و property@ + + Photo by `Mathyas Kurmann `__ + این درس نیز در ادامه مجموعه دروس آموزش شی گرایی در زبان برنامه‌نویسی پایتون می‌باشد که به شرح و جمع‌بندی برخی موارد مرتبط با مفاهیم کلاس و شی موجود در پایتون می‌پردازد. مواردی که ممکن است قابل گذر باشند ولی هریک نکاتی دارند که در توسعه برنامه شی گرای پایتونی به شما کمک خواهند کرد. مواردی همچون صفت ویژه __slots__ در کلاس‌ها، ایجاد Decorator با استفاده از کلاس در پایتون و همچنین ایجاد قابلیت getter و setter در پایتون با استفاده از مفاهیم Descriptors و دکوراتور property که در ادامه تا حد کافی شرح داده خواهند شد. diff --git a/lessons/l22.rst b/lessons/l22.rst index faa5bfe..672a230 100644 --- a/lessons/l22.rst +++ b/lessons/l22.rst @@ -8,6 +8,12 @@ درس ۲۲: شی گرایی (OOP) در پایتون: Type Hinting و دیتا کلاس (Data Class) =================================================================================================== +.. figure:: /_static/pages/22-python-object-oriented-programming-type-hinting-data-class.jpg + :align: center + :alt: شی گرایی (OOP) در پایتون: Type Hinting و دیتا کلاس (Data Class) + + Photo by `Stefan Widua `__ + این درس به عنوان آخرین بخش از دروس آموزش شی‌گرایی در زبان برنامه‌نویسی پایتون به شرح یک ویژگی جدید در این زبان با نام **دیتا کلاس (Data Class)** می‌پردازد. البته پیش از شروع لازم است با یک سینتکس جدید نیز در پایتون آشنا شویم، در این سینتکس ما نوع داده‌های خود را نیز به صراحت ذکر می‌کنیم، شیوه‌ای که Type Hints [`PEP 484 `__] خوانده می‌شود. هنگام ایجاد دیتا کلاس (Data Class) به دانش این سینتکس نیاز خواهیم داشت.