1. پیشگفتار
نسخه PDF این سند در |ICI| موجود است.
نمونههای موجود در این سند در |ICI| در دسترس هستند.
این سند فهرستی از اسکریپتهای پایتون در زمینههای مختلف را ارائه میدهد:
- اصول زبان؛
- مدیریت پایگاه داده MySQL و PostgreSQL;
- برنامهنویسی شبکه TCP/ IP (پروتکلهای HTTP، POP3، IMAP، SMTP);
- برنامهنویسی وب MVC با استفاده از چارچوب FLASK؛
- معماریهای سهلایه و برنامهنویسی مبتنی بر رابط؛
این یک دوره جامع پایتون نیست، بلکه مجموعهای از مثالهاست که برای توسعهدهندگانی در نظر گرفته شده که پیش از این از یک زبان اسکریپتی مانند پرل، PHP، VBScript، یا توسعهدهندگانی که با زبانهای تایپشده مانند جاوا یا C# آشنا هستند و به کشف یک زبان اسکریپتی شیءگرا علاقهمندند. این سند بهویژه برای خوانندگانی که تجربه کمی در برنامهنویسی دارند یا اصلاً تجربهای ندارند، مناسب نیست.
این سند همچنین مجموعهای از «بهترین شیوهها» نیست. بنابراین، توسعهدهندگان باتجربه ممکن است متوجه شوند که برخی از کدها میتوانند به شیوهای مؤثرتر نوشته شوند. هدف اصلی این سند ارائه مثالهایی برای هر کسی است که مایل به یادگیری پایتون ۳ و فریمورک فلک (Flask) است. خوانندگان سپس میتوانند با استفاده از منابع دیگر، درک خود را عمیقتر کنند.
اسکریپتها دارای توضیحات (کامنت) هستند و نتایج اجرای آنها نشان داده میشود. گاهی توضیحات بیشتری نیز ارائه شده است. این سند نیازمند خواندن فعال است: برای درک یک اسکریپت، باید کد آن، توضیحات آن و نتایج اجرای آن را بخوانید.
مثالهای این سند در آدرس |ICI| در دسترس هستند:

این سند بهروزرسانی سندی است که در ژوئن ۲۰۱۱ منتشر شد |https://tahe.developpez.com/tutoriels-cours/python/|. سند ۲۰۱۱ با استفاده از مفسر Python 2.7 ایجاد شده بود. از آن زمان، نسخههای جدید پایتون (3.x) منتشر شدهاند. تا فوریه ۲۰۲۰، نسخهٔ فعلی ۳.۸ است. نسخههای 3.x یک شکاف در سازگاری بین نسخهها ایجاد کردهاند: کدی که تحت پایتون ۲.۷ اجرا میشود ممکن است تحت پایتون ۳.x غیرقابل استفاده باشد. این امر بهویژه در مورد خروجی کنسول صادق است. در نسخه ۲.۷، میتوانید [print "toto"] بنویسید، در حالی که در 3.x باید [print("toto")] بنویسید: باید پرانتز اضافه کنید. این تغییر ساده به این معناست که بیشتر کد ارائهشده در سند سال ۲۰۱۱ را نمیتوان مستقیماً با پایتون ۳.x استفاده کرد. این کد نیاز به اصلاح دارد.
این سند جدید فراتر از صرفاً بهروزرسانی کد سال ۲۰۱۱ برای قابل اجرا کردن آن با پایتون ۳.۸ عمل میکند:
- بخشهای مربوط به برنامهنویسی TCP-IP و استفاده از پایگاههای داده تغییرات قابل توجهی داشتهاند؛
- بخش برنامهنویسی وب که قبلاً تنها یک مقدمه بود، اکنون یک دوره جامع با استفاده از چارچوب FLASK است؛
برای ساخت این دوره، رویکرد غیرمعمولی را در پیش گرفتم: دورههای PHP و [Introduction au langage PHP7 par l’exemple] را پورت کردم. بنابراین ساختارهای سنتی دورههای پایتون یا فلسک را دنبال نکردم. مهمتر از همه، میخواستم بدانم چگونه میتوانم آنچه را که در PHP 7 انجام داده بودم، در پایتون ۳ پیادهسازی کنم. نتیجه این شد که توانستم تمام مثالهای دوره PHP 7 را در پایتون ۳ / فلاسک بازسازی کنم.
این سند ممکن است حاوی خطاها یا موارد جاافتاده باشد. از خوانندگان دعوت میشود تا برای گزارش آنها از بخش بحث |انجمن| استفاده کنند.
محتویات این سند به شرح زیر است:
فصل | پوشه کد | فهرست مطالب |
مرور کلی دوره | ||
راهاندازی محیط کار | ||
[bases] | مبانی پایتون – ساختارهای زبان – انواع داده – توابع – خروجی کنسول – رشتههای قالببندی – تبدیل نوع – لیستها – دیکشنریها – عبارتهای منظم | |
[strings] | نوتاسیون رشتهای – متدهای کلاس <str> – رمزگذاری/رمزگشایی رشتهها در UTF-8 | |
[exceptions] | مدیریت استثنا | |
[fonctions] | دامنه متغیرها – ارسال پارامترها – استفاده از ماژولها – مسیر پایتون – پارامترهای نامگذاریشده – توابع بازگشتی | |
[fichiers] | خواندن/نوشتن یک فایل متنی – کار با فایلهای رمزگذاریشده در UTF-8 – کار با فایلها در jSON | |
[impots/v01] | نسخهٔ ۱ تمرین عملی: محاسبهٔ مالیات بر درآمد. این تمرین در ۱۸ نسخه موجود است – نسخهٔ ۱ یک راهحل رویهای را پیادهسازی میکند. | |
[imports] | مدیریت وابستگیهای برنامه با وارد کردن ماژولها – روشی برای مدیریت وابستگیها ارائه شده است – این روش در سراسر سند به کار رفته است – مدیریت مسیر پایتون | |
[impots/v02] | نسخهٔ ۲ برنامه بر پایهٔ نسخهٔ ۱ ساخته شده است و تمام ثابتهای پیکربندی را در یک فایل پیکربندی واحد تجمیع میکند که همچنین مسیر پایتون را مدیریت میکند | |
[impots/v03] | نسخهٔ ۳ برنامه بر پایهٔ نسخهٔ ۲ ساخته شده است، با استفاده از توابعی که در یک ماژول قرار گرفتهاند – مدیریت وابستگیها از طریق پیکربندی انجام میشود – معرفی فایلی به نام jSON برای خواندن دادههای مورد نیاز برای محاسبهٔ مالیات و نوشتن نتایج محاسبات | |
[classes/01] | کلاسها – ارثبری – متدها و ویژگیها – گترها/ستورها – سازنده – ویژگی [__dict__] | |
[classes/02] | مروری بر کلاسهای [BaseEntity] و [MyException] که در ادامه این سند استفاده میشوند – [BaseEntity] تبدیلهای شیء/فرهنگ لغت را تسهیل میکند | |
[troiscouches] | معماری لایهای و برنامهنویسی مبتنی بر رابط. این فصل روشهای برنامهنویسی مورد استفاده در سایر بخشهای این سند را ارائه میدهد | |
[impots/v04] | نسخهٔ ۴ برنامه – این نسخه راهحلی را با استفاده از معماری لایهبندیشده، برنامهنویسی مبتنی بر رابط و کلاسهای مشتقشده از [BaseEntity] و [MyException] پیادهسازی میکند | |
[databases/mysql] | نصب SGBD MySQL – اتصال به پایگاه داده – ایجاد جدول – اجرای دستورات SQL SELECT, UPDATE, DELETE, INSERT – تراکنش – پرسوجوهای پیکربندیشده SQL | |
[databases/postgresql] | نصب SGBD PostgreSQL – اتصال به پایگاه داده – ایجاد جدول – اجرای دستورات SQL SELECT, UPDATE, DELETE, INSERT – تراکنش – پرسوجوهای پیکربندیشده SQL | |
[databases/anysgbd] | نوشتن کد مستقل از SGBD | |
[databases/sqlalchemy] | ORM (نقشهبردار شیء-رابطهای) SqlAlchemy – یک ORM رویکردی یکپارچه برای کار با SGBD مختلف فراهم میکند - نگاشت کلاسها / جداول SQL – عملیات بر روی کلاسهای تصویر جدول SQL | |
[impots/v05] | نسخه ۵ برنامه محاسبه مالیات – با استفاده از معماری لایهای نسخه ۰۴ وORM SqlAlchemy برای کار با SGBD MySQL و PostgreSQL | |
[inet] | برنامهنویسی اینترنت – پروتکلهای TCP / IP (پروتکل کنترل انتقال / پروتکل اینترنت) – HTTP (HyperText پروتکل انتقال) – SMTP (پروتکل ساده انتقال ایمیل) – POP (پروتکل اداره پست) – IMAP (پروتکل دسترسی به پیامهای اینترنتی) | |
[flask] | خدمات وب با استفاده از چارچوب وب Flask – نمایش یک صفحه HTML – سرویس وب jSON – درخواستها GET و POST – مدیریت یک جلسه وب | |
[impots/http-servers/01] [impots/http-clients/01] | نسخه ۶ تمرین عملی – ایجاد یک سرویس وب jSON برای محاسبه مالیات با استفاده از معماری چندلایه – نوشتن یک کلاینت وب برای این سرور با استفاده از معماری چندلایه – برنامهنویسی کلاینت/سرور – استفاده از ماژول [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | نسخه ۷ تمرین برنامه – بهبودی نسبت به نسخه ۶: کلاینت و سرور چندرشتهای هستند – ابزارهای [Logger] برای ثبت تبادلههای کلاینت/سرور – [SendMail] برای ارسال ایمیل به مدیر برنامه | |
[impots/http-servers/03] [impots/http-clients/03] | نسخه ۸ تمرین برنامه – نسخه ۷ با استفاده از یک جلسه وب بهبود یافته است | |
[xml] | مدیریت XML (زبان نشانهگذاری eXtended) با ماژول [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | نسخه ۹ تمرین برنامه – نسخه ۸ برای گنجاندن مبادلات کلاینت/سرور در XML اصلاح شده است؛ | |
[impots/http-servers/05] [impots/http-clients/05] | نسخه ۱۰ تمرین عملی – به جای پردازش N مؤدی از طریق N درخواست GET، از یک درخواست واحد POST استفاده میشود که در بدنه POST شامل N مؤدی است. | |
[impots/http-servers/06] [impots/http-clients/06] | نسخه ۱۱ تمرین برنامه – معماری مشتری/سرور برنامه تغییر یافته است: لایه [métier] از سرور به مشتری منتقل شده است | |
[impots/http-servers/07] | نسخه ۱۲ تمرین کاربردی – این نسخه یک سرور MVC را پیادهسازی میکند (مدل – نما – کنترلکننده) معماری، که بنا به درخواست کلاینت، یکی از نسخههای jSON، XML یا HTML را ارائه میدهد. این فصل نسخههای jSON و XML از سرور را پیادهسازی میکند | |
[impots/http-clients/07] | پیادهسازی کلاینتهای jSON و XML برای سرور MVC در نسخه ۱۲ | |
[impots/http-servers/07] | پیادهسازی سرور HTML در نسخه ۱۲ – با استفاده از چارچوب بوتاسترپ CSS – | |
[impots/http-servers/08] | نسخه ۱۳ تمرین عملی – بازسازی کد از نسخه ۱۲ – مدیریت جلسه با استفاده از ماژول [flask_session] و سرور Redis – استفاده از گذرواژههای رمزگذاریشده | |
[impots/http-servers/09] [impots/http-clients/09] | نسخه 14 تمرین عملی – پیادهسازی URL با توکن CSRF (جعلیسازی درخواست بینسایتی) | |
[impots/http-servers/10] | نسخه ۱۵ تمرین عملی – بازسازی کد نسخه ۱۴ برای مدیریت دو نوع اقدام: ASV (اقدام نمایش نما)، که صرفاً برای نمایش یک نما بدون تغییر وضعیت سرور استفاده میشوند، ADS (عمل انجام کاری)، که عملی را انجام میدهد که وضعیت سرور را تغییر میدهد – تمام این عملیات با هدایت به یک عمل ASV پایان مییابند – این امر تضمین میکند که تازهسازی صفحات در مرورگر کلاینت به درستی مدیریت شود | |
[impots/http-servers/11] | نسخه ۱۶ برنامه – رسیدگی به URL با پیشوند | |
[impots/http-servers/12] | نسخه ۱۷ برنامه – انتقال نسخه ۱۶ به سرور آپاچی/ویندوز | |
[impots/http-servers/13] | نسخهٔ ۱۸ برنامه – رفع یک باگ در نسخهٔ ۱۷ |
نسخه نهایی تمرین برنامه، یک برنامه محاسبه مالیات مشتری/سرور با معماری زیر است:

لایه [web] که در بالا نشان داده شده است، با استفاده از معماری MVC پیادهسازی شده است:

این سند مملو از محتواست. خوانندگانی که تا انتها با پشتکار ادامه دهند، درک خوبی از برنامهنویسی وب MVC با پایتون/فلسک به دست خواهند آورد و در نتیجه، درک خوبی از برنامهنویسی وب MVC در سایر زبانها نیز خواهند داشت.
خوانندگانی که ترجیح میدهند به جای خواندن یک سخنرانی، کد را مشاهده، تست و ویرایش کنند، میتوانند به شرح زیر عمل کنند:
-
راهاندازی یک محیط توسعه:
- یک مفسر پایتون؛
- جامعه IDE PyCharm؛
- Laragon (سرور Apache، SGBD MySQL، سرور Redis);
- SGBD PostgreSQL;
- کلاینت HTTP Postman؛
- سرور ایمیل hMailServer؛
-
کد را در مثالها بررسی کنید |https://tahe.developpez.com/tutoriels-cours/python-flask-2020/documents/python-flask-2020.rar|:
- در هر پوشه، فایلی به نام [README.md] وجود دارد که پوشه را به یک فصل از دوره پیوند میدهد و محتوای آن را خلاصه میکند:

فایل [README.md] به این شکل است:

بعید است که خواننده کل دوره را بخواند:
- یک مبتدی ممکن است فصلهای ۱ تا ۱۵ را بخواند و در همانجا متوقف شود. سپس ممکن است مدتی را صرف نوشتن اسکریپتهای پایتون خود کند و بعد به این دوره بازگردد؛
- خوانندهای با دانش پایهای در پایتون که مایل به یادگیری در مورد پایگاههای داده و ORM (نقشهبردار شیء-رابطهای) [sqlalchemy] است، ممکن است از مطالعه فصلهای ۱۶ تا ۲۰ راضی باشد؛
- خوانندگانی که مایل به یادگیری برنامهنویسی وب هستند (HTTP, SMTP, POP3, IMAP) میتوانند فصل ۲۱ را مطالعه کنند. این فصل نسبتاً پیچیده است و اسکریپتهای پیشرفته را پوشش میدهد. میتوان آن را در دو سطح خواند:
- برای یادگیری در مورد پروتکلهای اینترنت؛
- برای دسترسی به اسکریپتهایی که از این پروتکلها استفاده میکنند؛
- خوانندگانی که دانش پایهای از پایتون دارند و میخواهند برنامهنویسی وب را با استفاده از فریمورک Flask بیاموزند، باید فصل ۲۲ را مطالعه کنند؛
- خوانندگانی که مایلند عمیقتر به برنامهنویسی وب با استفاده از چارچوب Flask بپردازند، میتوانند فصلهای ۲۳ تا ۳۸ را مطالعه کنند. این فصلها توسعهٔ برنامههای کلاینت/سرور با پیچیدگی فزاینده و همچنین یک برنامهٔ HTML/Python مبتنی بر مدل توسعهٔ MVC (مدل–نما – کنترلکننده). این برنامه در فصل ۳۲ توسعه داده شده است. میتوانید در آنجا متوقف شوید. فصلهای بعدی تغییرات غیرضروری را معرفی میکنند؛
Serge Tahé، سپتامبر ۲۰۲۰