برنامهنویسی پایتون
از اولین دستور تا یک برنامه کامل، در چهل جلسه
درباره این کتاب
این کتاب حاصل یک دوره چهل جلسهای برنامهنویسی پایتون است که در مؤسسه فنی و آموزشی کادوس رشت برگزار شده است. دوره از دو ترم تشکیل شده است: ترم اول با نام «مقدمهای بر پایتون» و ترم دوم با نام «پایتون پیشرفته»، هر کدام بیست جلسه سه ساعته. هر فصل این کتاب دقیقاً برابر با یک جلسه از آن دوره است، بهعلاوه یک فصل مقدماتی در ابتدا که پیش از جلسه اول باید خوانده شود.
هدف کتاب این است که خواننده بدون هیچ دانش قبلی شروع کند و در پایان بتواند یک برنامه واقعی بنویسد: برنامهای با رابط گرافیکی، با پایگاه داده، با اتصال به اینترنت و آماده تحویل به کاربر. هیچ فصلی از چیزی استفاده نمیکند که در فصلهای قبل توضیح داده نشده باشد. ترتیب فصلها از ساده به دشوار چیده شده است و پریدن از روی فصلها توصیه نمیشود.
ساختار هر فصل
هر فصل از چهار قسمت تشکیل شده است:
- توضیح موضوع: اینکه این جلسه درباره چیست و چرا به آن نیاز داریم.
- مثالها: کد کامل و قابل اجرا برای هر مفهوم.
- شرح مثال: بررسی خط به خط کدی که دیدیم و خروجیاش.
- جمعبندی و تمرین: جدول خلاصه و چند تمرین عملی.
کد مثالها را فقط نخوانید. آنها را در یک فایل بنویسید و اجرا کنید، بعد یک موضوع کوچک را عوض کنید و دوباره اجرا کنید. برنامهنویسی با انگشت یاد گرفته میشود، نه با چشم.
چه چیزی لازم دارید
- یک کامپیوتر با ویندوز، لینوکس یا مک. سختافزار خاصی ضرورتی ندارد.
- پایتون ۳، نسخه ۳.۱۰ یا بالاتر. نصبش در فصل صفر توضیح داده شده است.
- یک ویرایشگر کد. پیشنهاد ما VS Code است و رایگان است.
- برای فصلهای پایانی، اتصال به اینترنت برای نصب چند کتابخانه.
فهرست مطالب
ترم اول: مقدمهای بر پایتون، جلسه ۱ تا ۲۰
۱ اولین قدمها دستور print، متغیرها، چهار نوع داده پایه، تابع input و تبدیل نوع ۲ عملگرها عملگرهای ریاضی، تقسیم صحیح و باقیمانده، توان، اولویت عملگرها و انتساب ترکیبی ۳ رشتهها دنبالههای فرار، اندیس و برش، طول رشته، متدهای رشته و f-string ۴ شرطها نوع bool، عملگرهای مقایسهای، دستور if و else، and و or و not ۵ elif و شرطهای تودرتو چند حالتی با elif، شرط داخل شرط، عملگر سهتایی و دستور match ۶ حلقه for تکرار با for، تابع range، متغیر انباره و شمارنده، پارامترهای end و sep ۷ حلقههای تودرتو و الگوها حلقه داخل حلقه، جدول ضرب، چاپ الگوهای ستارهای و مثلثها ۸ حلقه while تکرار تا وقتی شرط برقرار است، break و continue، حلقه نگهبان و اعتبارسنجی ورودی ۹ لیستها ساختن لیست، اندیس و برش، append و pop و insert و remove، عملگر in ۱۰ الگوریتمهای لیست مجموع و میانگین، کمینه و بیشینه، جستوجو، مرتبسازی و لیست دوبعدی ۱۱ توابع تعریف تابع با def، پارامتر و آرگومان، دستور return و مقدار None ۱۲ آرگومانها و حوزه متغیر مقدار پیشفرض، آرگومان کلیدواژهای، متغیر محلی و سراسری، تابع main و نگهبان اجرا ۱۳ توابع پیشرفته آرگومانهای ستارهدار، راهنمای نوع، مستندنویسی، دام پیشفرض تغییرپذیر و بازگشت ۱۴ دیکشنری، تاپل و مجموعه سه ساختمان داده دیگر پایتون، متدهایشان و اینکه هر کدام کجا به کار میآیند ۱۵ ساختارهای داده تودرتو لیستی از دیکشنریها، ماتریس، تبدیل ساختارها به هم و ماژول collections ۱۶ کتابخانه استاندارد دستور import و ماژولهای random و math و datetime و time و sys ۱۷ ماژولها و بستهها ساختن ماژول خودمان، شکلهای مختلف import، بسته و فایل __init__.py ۱۸ فایلها و سیستمعامل باز کردن و خواندن و نوشتن فایل، دستور with، ماژولهای os و pathlib ۱۹ خطاها و استثناها ساختار try و except و else و finally، دستور raise، assert و ماژول logging ۲۰ پروژههای ترم اول حدس عدد، سنگ کاغذ قیچی، وردل، دوز و یک بازی آزمون که سؤالهایش از فایل میآیدترم دوم: پایتون پیشرفته، جلسه ۲۱ تا ۴۰
۲۱ شیءگرایی: کلاس و شیء کلاس، شیء، متد __init__، پارامتر self و تفاوت صفت کلاس با صفت نمونه ۲۲ کپسولهسازی و dataclass صفت خصوصی، property، متد ایستا و متد کلاس، ترکیب و دکوراتور dataclass ۲۳ وراثت و چندریختی ارثبری، تابع super، ترتیب MRO، تایپ اردکی و کلاس انتزاعی ۲۴ متدهای جادویی و استثناهای سفارشی متدهای دو زیرخطی، سربارگذاری عملگرها، مدیر زمینه و ساختن کلاس خطای خودمان ۲۵ کد پایتونی، بخش اول باز کردن مقادیر، enumerate و zip، درک لیستی، for-else، عملگر شرطی و گردالی ۲۶ کد پایتونی، بخش دوم تابع lambda، map و filter و کلید مرتبسازی، دکوراتور، مولد و ماژول itertools ۲۷ CSV و JSON خواندن و نوشتن فایلهای دادهای، ماژول csv، ماژول json و یک گزارشگیر کامل ۲۸ بستهها، REST API و XML محیط مجازی و pip، فایل requirements.txt، کتابخانه requests، وبسرویس و XML ۲۹ ارزشیابی میانترم جلسه آزمون. مرور فصل ۲۱ تا ۲۸، چکلیست آمادگی و یک نمونه آزمون کامل ۳۰ پایگاه داده و زبان SQL جدول و ستون، ساخت و درج و بهروزرسانی، شرط و مرتبسازی، توابع تجمعی و JOIN ۳۱ sqlite3 در پایتون اتصال به پایگاه داده، چهار عمل اصلی، پرسوجوی پارامتری و تراکنش ۳۲ ORM و SQLAlchemy چرا ORM لازم است، ساختن یک ORM دستساز و سپس مدل و رابطه در SQLAlchemy ۳۳ الگوهای طراحی تکنمونه، کارخانه، سازنده، مبدل، دکوراتور، استراتژی و ناظر ۳۴ رابط گرافیکی با tkinter پنجره و ویجتها، سه مدیر چیدمان، رویدادها، متغیرهای کنترلی و یک ماشینحساب ۳۵ tkinter پیشرفته کار با فایل و تصویر، ویجتهای ttk، پنجره دوم، بوم نقاشی و یک برنامه دیتابیسی ۳۶ PySide6 و ساخت فایل اجرایی کیوت در پایتون، سیگنال و اسلات، Qt Designer و ساخت فایل exe با PyInstaller ۳۷ همروندی: نخها و asyncio ماژول threading، شرایط رقابتی و قفل، صف و استخر نخ، قفل سراسری و برنامهنویسی ناهمگام ۳۸ وب با Flask مسیرها، قالب Jinja2، فرمها، نشست و ورود کاربر، وبسرویس JSON و Flask-SQLAlchemy ۳۹ پروژه پایانی، Git و GitHub ساخت یک برنامه مدیریت کتابخانه با معماری لایهای، بهعلاوه کنترل نسخه با گیت ۴۰ ارزشیابی پایانی جلسه آزمون. مرور کل ترم دوم، دفاع از پروژه پایانی و نقشه راه ادامه مسیردر انتهای هر فصل، به پوشهای از فایلهای دوره ارجاع داده شده است، مانند S06-for-loops. اگر آن فایلها را در اختیار دارید، بعد از خواندن هر بخش، نمونه مربوط به آن را باز کنید، اجرایش کنید و کدش را تغییر دهید.