آموزش پایتون

مؤلف دوره:
این دوره توسط اکرم امراه‌نژاد تألیف شده است.

سطح دوره:
سطح این دوره مقدماتی است.

پیش‌نیازها:
پیش‌نیاز دورۀ آموزش زبان پایتون، دورۀ آموزش اصول برنامه‌نویسی می‌باشد.

مدت زمان دوره:
در حال تألیف

برای شروع کلیک کنید

معرفی زبان برنامه‌نویسی پایتون

در حال حاضر پایتون یکی از محبوب‌ترین زبان‌های برنامه‌نویسی دنیا است؛ هم طرفدارانی در میان مبتدیان دارد و هم شیفتگانی در میان حرفه‌ای‌ها مضاف بر اینکه شرکت‌های بزرگی از این زبان برای توسعهٔ اپلیکیشن‌های خود استفاده می‌کنند که از آن جمله می‌توان به گوگل اشاره کرد که از این زبان برای توسعهٔ موتور جستجوی گوگل و یوتیوب استفاده کرده است و این نشان از موفقیت این زبان برنامه‌نویسی سطح‌بالا دارد (از جمله دیگر اپلیکیشن‌های محبوبی که با استفاده از زبان برنامه‌نویسی پایتون طراحی شده‌اند می‌توان به سایت Quora که یک جامعهٔ مجازی پرسش‌وپاسخ است، تحلیل داده‌های سرویس موسیقی Spotify و نرم‌افزار دسکتاپ Dropbox اشاره کرد.)

در واقع، زبان برنامه‌نویسی پایتون یک زبان چندمنظوره و شییٔ‌گرا است و همان‌طور که از نمونه نرم‌افزارهای نوشته‌شده با این زبان که در بالا به آن‌ها اشاره شد مشخص است، از این زبان می‌توان برای توسعهٔ سایت‌های دینامیک گرفته تا تحلیل داده‌ها و نرم‌افزارهای دسکتاپ استفاده نمود.

معرفی دورهٔ آموزش پایتون

در دورهٔ آنلاین آموزش پایتون سعی نموده‌ایم تا مفاهیم پایه‌ای این زبان را به شکلی ساده برای برنامه‌نویسان تازه‌کار و علاقه‌مند به یادگیری این زبان شرح داده و ایشان را با جنبه‌های مختلف Python 3 آشنا سازیم (لازم به یادآوری است که فصول ۱ تا ۶ این دوره توسط سرکار خانم نرگس اسدی تألیف شده است.)

خالق زبان برنامه‌نویسی پایتون

زبان پایتون توسط Guido van Rossum طراحی شده است که لقب وی Benevolent Dictator for Life به‌ معنای «دیکتاتور خیرخواه جاویدان» است. وی پیش از طراحی این زبان اقدام به طراحی زبانی تحت‌ عنوان ABC کرده بود اما با اقبال عمومی مواجه نشد. در واقع، پس از آنکه گودیو وَن روسوم بازخوردهایی در ارتباط با این زبان از سایر برنامه‌نویسان گرفت، در زمستان سال ۱۹۸۹ زبان پایتون را پایه‌ریزی کرد که بر خلاف زبان قبلی‌اش به‌ خوبی مورد استقبال سایر برنامه‌نویسان و شرکت‌های نرم‌افزاری سرتاسر دنیا قرار گرفت.

تاریخچۀ زبان برنامه‌نویسی پایتون

پایتون زاییدۀ افکار Guido van Rossum است که در مؤسسۀ تحقیقات ملی ریاضیات و علوم کامپیوتری هلند توسعه داده شد به طوری که در اواخر سال 1989 وِی به دنبال فعالیتی برای پُر کردن اوقات فراغت خود در تعطیلات سال نو بود و نیاز به توضیح نیست که وی قبلاً زبان ABC را طراحی کرده بود اما با اقبال عمومی مواجه نشد! از دید روسوم، ABC یک زبان اصولی و فوق‌العاده بود و از همین روی درصدد برآمد تا زبانی از نسل ABC را به وجود آورد که ضعف‌های آن را نداشته باشد و از همین روی شروع به نوشتن یک زبان اسکریپتی برای سیستم‌عامل Amoeba کرد (منظور از زبان‌های اسکریپتی، زبان‌های سطح بالایی است که سورس‌کد نوشته‌شده با آن‌ها به جای Compile تفسیر یا Interprete می‌شوند که از آن جمله می‌توان به پی‌اچ‌پی، پایتون و پرل اشاره کرد.)

در طراحی پایتون از زبان‌های دیگری مانند C ،Modula-3 ،C++ ،Algol-68 ،SmallTalk ،Unix shell و به ویژه زبان ABC الهام گرفته شده است. در واقع، ون روسوم در سال 1991 این زبان را به صورت عمومی منتشر کرد و از آن زمان به بعد گروه زیادی از کاربران از جمله برنامه‌نویسان حرفه‌ای، مربیان و محققین علوم کامپیوتری به این زبان روی آوردند (ون روسوم طراح و توسعه‌دهندۀ اصلی زبان پایتون است که همه او را با نام کوچکش یعنی گوديو می‌شناسند و گاهی او را با عنوان Benevolent Dictator For Life یا به اختصار BDFL به معنای «دیکتاتور خیرخواه جاویدان» خطاب می‌کنند.)

ون روسوم نام این زبان را از روی گروه تئاتر محبوبش تحت عنوان «گروه کمدی مونتی پایتون» گرفته است و حتی احتمالاً بخشی از دلیل نام‌گذاری IDE پیش‌فرض این زبان تحت عنوان Integrated Development Environment یا به اختصار IDLE نیز از روی نام یکی از بنیان‌گذاران این گروه کمدی به نام Eric Idle می‌باشد.

مزایای زبان برنامه‌نویسی پایتون

پایتون یک زبان برنامه‌نویسی اسکریپتی، شیئ‌گرا و سطح بالا است و می‌تواند یک انتخاب بسیار خوب برای کسانی باشد که می‌خواهند برنامه‌نویسی را آغاز نمایند. به عبارتی، سادگی و راحتی یادگیری سینتکس زبان پایتون باعث خوانایی بهتر سینتکس این زبان شده از سوی دیگر امکان استفاده از کدها و کلاس‌های نوشته‌شده به زبان‌های دیگری مانند سی‌پلاس‌پلاس و جاوا در آن وجود دارد. همچنین این زبان ماژول‌ها و پکیج‌های بسیاری را پشتیبانی می‌کند که منجر به ماژولار بودن و قابلیت استفادۀ مجدد برنامه می‌شود مضاف بر اینکه مفسر پایتون و لایبرری استاندارد گستردۀ آن، بدون هیچ هزینه‌ای برای تمامی پلتفرم‌های اصلی در دسترس علاقه‌مندان قرار گرفته است. به طور کلی، برخی از مهم‌ترین فیچرهای این زبان عبارتند از:

- زبان برنامه‌نویسی پایتون یک زبان تفسیری است بدین معنی که در زمان اجرا توسط مفسر پردازش می‌شود و نیاز نیست که قبل از اجرای برنامه آن را کامپایل کرد که از این نظر مشابه زبان برنامه‌نویسی پِرل و پی‌اچ‌پی است و همین مسئله سرعت توسعهٔ اپلیکیشن با آن را بالا می‌برد.

- پایتون دو حالت تعاملی و نرمال را دارا است که در حالت تعاملی مفسر برای تمامی دستورهای نوشته‌شده پیام‌هایی را در رابطه با آن‌ها به کاربر نشان می‌دهد و در واقع با کاربر محاوره می‌کند! برای مثال، اگر دستور hello را تایپ کنیم، پیغامی به صورت زیر در معرض دیدمان قرار می‌گیرد:

>>> hello
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'hello' is not defined

همان‌طور که در کد فوق مشاهده می‌شود، hello دستور صحیحی در زبان پایتون نیست و از همین روی پیغام خطایی در خروجی نمایش داده شده است که با این روش مفسر با کاربر محاوره می‌کند و کاربر را از این خطا مطلع می‌سازد (اما گاهی این حالت تعاملی برای کاربران دست‌وپاگیر می‌شود که می‌توان با دستور ()exit از حالت تعاملی خارج شده و در حالت نرمال برنامه‌نویسی کرد.) حال اگر دستور ()print را که یک دستور صحیح در پایتون است به صورت زیر وارد کنیم، نتیجۀ آن در سطر بعد نمایش داده می‌شود:

>>> print("Hello World")
Hello World

همان‌طور که می‌بینید، استرینگ مد نظر در خروجی نمایش داده می‌شود. 

- پایتون زبانی بسیار مناسب برای افراد مبتدی است و با استفاده از این زبان می‌توان طیف وسیعی از اپلیکیشن‌ها را از پردازش متون گرفته تا مرورگرهای وب و گیم توسعه داد به علاوه اینکه یادگیری این زبان آسان است چرا که ساختاری ساده داشته و سینتکس آن کاملاً واضح و تمیز است که چنین خصوصیاتی منجر بدین می‌شوند تا علاقمندان این زبان را به سرعت یاد بگیرند.

- پایتون کلمات کلیدی محدودی دارد که به منزلهٔ پارامترها یا دستوراتی هستند که هر زبان برنامه‌نویسی مجموعه‌ای از آن‌ها را داشته و نمی‌توان آن‌ها را به عنوان اسامی متغیرها مورد استفاده قرار داد. برای مثال، print یک کلمۀ کلیدی در پایتون است که عمل چاپ را انجام می‌دهد و نمی‌توان آن  را به عنوان نام متغیر استفاده کرد که با به‌کارگیری دستور زیر می‌توان لیست کلمات کلیدی را در هر نسخه از پایتون به‌ دست آورد:

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

همان‌طور که مشاهده می‌کنید، نسخۀ سوم زبان پایتون چیزی در حدود 30 کلمۀ کلیدی دارد که یکی از دلایل یادگیری آسان این زبان برنامه‌نویسی می‌باشد.

- قابلیت خوانایی آسان زبان پایتون از جملۀ دیگر مزایای این زبان می‌باشد به طوری وضوح کدهای نوشته‌شده به این زبان کاملاً مشهود است.

- زبان برنامه‌نویسی پایتون لایبرری استاندارد گسترده‌ای دارا است که کراس‌پلتفرم بوده و می‌توان این لایبرری‌ها را در پلتفرم‌های بسیاری به‌ کار برد. در واقع، زبان برنامه‌نویسی پایتون کراس‌پلتفرم بوده و از قابلیت اجرا بر روی طیف گسترده‌ای از پلتفرم‌های سخت‌افزاری برخوردار می‌باشد که در تمامی پلتفرم‌ها نیز رابط کاربری مشابهی دارد.

- پایتون از قابلیت توسعۀ بالایی برخوردار است به طوری که می‌توان ماژول‌های سطح پایینی به مفسر آن اضافه کرد (منظور از ماژول‌های سطح پایین در اینجا برنامه‌هایی است که برای حل مسائل خاصی نوشته می‌شوند و برنامه‌نویسان را قادر می‌سازند تا ابزارهای مورد نیاز خود برای انجام پروژۀ مورد نظر را اضافه کرده یا تغییراتی در ابزارهای موجود ایجاد کنند و در نتیجه به صورت مؤثرتری برنامه‌نویسی کنند.)

- زبان پایتون ابزارهایی برای ارتباط با تمامی دیتابیس‌های مطرحی همچون Oracle ،MySQL ،IBM DB2 و همچنین دیتابیس‌های دیگری نظیر Microsoft SQLServer و Microsoft Access را فراهم آورده است.

جدای از ویژگی‌های فوق‌الذکر، پایتون ویژگی‌های جالب بسیار دیگری نیز دارا است به طوری که این زبان به همان اندازه که از شیئ‌گرایی پشتیبانی می‌کند، از برنامه‌نویسی فانکشنال نیز پشتیبانی می‌کند مضاف بر اینکه پایتون هم قابلیت استفاده به عنوان زبان اسکریپتی و هم کامپایل به بایت‌کدها به منظور ساخت اپلیکیشن‌های بزرگ را دارا است. همچنین این زبان از قابلیت Garbage Collection خودکار برخوردار است که در آن حافظۀ اشغال‌شدۀ سیستم از آبجکت‌هایی پاک‌سازی می‌شود که توسط دولوپر در برنامه مورد استفاده قرار نمی‌گیرند و در پایان هم لازم به یادآوری است که زبان پایتون قابلیت ادغام با سایر زبان‌های برنامه‌نویسی همچون جاوا، سی، سی‌پلاس‌پلاس و ... را دارا است.

نسخه‌های مختلف زبان برنامه‌نویسی پایتون
نام‌گذاری نسخه‌های پایدار زبان برنامه‌نویسی پایتون به صورت x.y.z انجام می‌شود که با شمارۀ 0.9.0 آغاز شد و ادامه یافت. بر این اساس، زمانی که تغییرات پایه‌ای در ساختار زبان ایجاد شود مقدار x افزایش می‌یابد، اِعمال سایر تغییرات مهم در نسخه‌های جدید با افزایش عدد y همراه است و در صورت رفع باگ‌های احتمالی در یک نسخۀ منتشرشده، مقدار z در توزیع اصلاح‌شده افزایش می‌یابد (در بسیاری از نسخه‌های منتشرشده، عدد z تغییر نمی‌کند و عموماً نسخه‌ها به صورت x.y معرفی می‌شوند.)

توسعه‌دهندگان زبان برنامه‌نویسی پایتون در اکتبر سال 2000 نسخۀ پایدار 2.0 را با ایجاد تغییرات اساسی در ادامۀ توزیع 1.6 منتشر کردند و پس از آن نیز روند تغییر و اصلاح روی این توزیع جدید ادامه یافت اما این در حالی است که ون روسوم (خالق اصلی زبان پایتون) از روند اصلاحات رضایت چندانی نداشت و همواره در فکر ایجاد تغییرات بنیادی در ساختار و سینتکس پایتون بود تا به هدف اصلی خود از طراحی این زبان یعنی دست‌یابی به ساختاری ساده و در عین حال قدرتمند برسد.

یکی از مشکلاتی که وی در راستای بهبود ساختار و سینتکس زبان پایتون با آن مواجه بود، عدم تطبیق‌پذیری نسخه‌های قبلی با ساختار سادۀ مد نظر او بود و از همین روی یک دوراهی در مسیر توسعۀ پایتون قرار گرفت بدین صورت که فرآیند توسعه یا باید روی همان ساختار و سینتکس نسخه‌های قبلی ادامه پیدا می‌کرد که به‌روزترین آن‌ها نسخه‌های 2.0 به بالا بود و در چنین شرایطی با افزودن قابلیت‌های جدید به تدریج تبدیل به زبانی پیچیده می‌شد و یا اینکه ساختار زبان تغییر اساسی پیدا می‌کرد که با وجود عدم تطبیق با نسخه‌های قبلی ساده‌تر بود و با حذف پیچیدگی‌ها امکان برنامه‌نویسی را برای دولوپرهای این زبان راحت‌تر می‌ساخت. در نهایت، پس از بررسی‌های فراوان او تصمیم گرفت به جای حفظ ساختار قبلی، هدف خود را دنبال کرده و پس از ایجاد تغییرات مورد نظر در دسامبر سال 2008 توزیع نسخۀ سوم پایتون با نام Py3K یا Python 3000 با شمارۀ 3.0 آغاز شد.

به عقیدۀ روسوم احتمالاً کاربران پایتون در نگاه اول تغییرات چندانی را در توزیع جدید تشخیص نمی‌دهند، با این حال وی اطمینان داده است که در طراحی این نسخه بسیاری از موارد آزاردهنده، نقص‌ها و نتایج حاصل از ساختارهای نادرست قبلی رفع شده‌اند که از جملهٔ این اصلاحات می‌توان به تغییر در کلاس اعداد صحیح، مد نظر قرار دادن دستور ()print به عنوان یک فانکشن، حذف برخی سینتکس‌ها همچون < و > و افزودن سینتکس‌های جدید، تغییر در سینتکس‌های قبلی، تغییر در لایبرری‌های استاندارد، تغییر در برخی عملگرها و فانكشن‌ها، پشتیبانی بهتر از یونیکد و غيره اشاره کرد.

قاعدتاً پس از انتشار نسخۀ سوم زبان پایتون، تمامی برنامه‌ها و لایبرری‌های نسخۀ قبلی می‌بایست به نسخۀ جدید ارتقاء می‌یافتند اما با این حال اِعمال قابلیت‌ها و سینتکس جدید در نسخه‌های قبلی و مهاجرت شرکت‌های بزرگ به نسخۀ جدید بسیار زمان‌بر بوده و از طرفی نسخۀ جدید هم قابلیت به اصطلاح Backward Compatibility یا سازگاری با نسخه‌های پیشین را ندارد و در صورتی که ایرادی در نسخه‌های دوم وجود داشته باشد، کاربران نمی‌توانند با استفاده از نسخۀ جدید بر آن ایرادات فائق آیند و از همین روی تیم توسعۀ زبان برنامه‌نویسی پایتون تصمیم گرفت تا در یک دورۀ زمانی محدود توسعۀ نسخۀ دوم را ادامه دهد (بر اساس قراردادهای صورت گرفته، توسعه نسخۀ دوم تنها تا شمارۀ 2.7 ادامه می‌یابد و پشتیبانی از آن فقط تا سال 2020 ادامه می‌یابد.)

ابزارهای توسعۀ اپلیکیشن با زبان پایتون
محیط‌های توسعۀ اپلیکیشن بسیاری نیز برای زبان برنامه‌نویسی پایتون طراحی و به بازار عرضه شده که در ادامه با برخی از معروف‌ترین آن‌ها آشنا خواهیم شد:

- Wing: این محیط توسعۀ یکپارچه به صورت اختصاصی برای زبان برنامه‌نویسی پایتون طراحی شده است و از نسخه‌های 2x و 3x این زبان پشتیبانی می‌کند و در پلتفرم‌های ویندوز، گنو/لینوکس و مَک قابل‌اجرا است.

- Spyder: این ابزار که با نام Pydee نیز شناخته می‌شود و اپن‌سورس بوده بر روی پلتفرم‌های رایج قابل‌اجرا است به علاوه اینکه Pydee از نسخه‌های 2x و 3x زبان برنامه‌نویسی پایتون پشتیبانی می‌کند.

- PTVS: این محیط توسعه که مخفف واژگان Python Tools for Visual Studio می‌باشد، یک پلاگین برای نرم‌افزار ویژوال استودیو است که از زبان پایتون پشتیبانی می‌کند به علاوه اینکه از نسخه‌های 2x و 3x پایتون نیز پشتیبانی می‌کند.

- PyDev: یک IDE اختصاصی برای پایتون است که از ریفکتور کردن کد، دیباگینگ گرافیکی، تحلیل کد و غیره پشتیبانی می‌کند به علاوه اینکه PyDev قابلیت اجرا بر روی سیستم‌عامل‌هایی همچون ویندوز، گنو/لینوکس و مک را دارا است.

- PyCharm: یک IDE دیگر برای برنامه‌نویسی در پایتون است که قابلیت‌هایی همچون تحلیل کد، دیباگ کردن گرافیکی، یونیت تست و غیره را ارائه می‌نماید؛ همچنین این نرم‌افزار قابل‌اجرا بر روی سیستم‌عامل‌های ویندوز، گنو/لینوکس و مک بوده و از نسخه‌های 2x و 3x زبان پایتون نیز پشتیبانی می‌کند و محصول شرکت معروف JetBrains است.

- IDLE: یک IDE برای زبان پایتون است که از نسخۀ 1.5.2 به بعد با این زبان همراه بود و توسط ون روسوم و همکارانش توسعه یافته است. این IDE کاملاً با زبان پایتون نوشته شده است و هدف از طراحی آن نیز سادگی و راحتی برای افراد مبتدی به خصوص برای محیط‌های آموزشی بود که در پلتفرم‌های مختلف قابل‌اجرا است.

- Eric: این آی‌دی‌ای رایگان هر دو نسخۀ زبان پایتون را پشتیبانی می‌کند و در عین سادگی، قابلیت‌های فراوانی دارا است.

موارد استفادهٔ پایتون 
امروزه بسیاری از سازمان‌ها به منظور پیاده‌سازی پروژه‌های بزرگ خود از زبان برنامه‌نویسی پایتون استفاده می‌کنند که از آن جمله می‌توان شرکت‌ها و سازمان‌های بزرگی مانند گوگل و ناسا را نام برد که بسیاری از پروژه‌های خود را با به‌کارگیری این زبان توسعه داده‌اند اما در ادامه برخی از دیگر شرکت‌هایی که از پایتون برای توسعهٔ اپلیکیشن‌های خود استفاده نموده‌اند را نام خواهیم برد که عبارتند از:

- دراپباکس
- اینستاگرام
- نت‌فلیکس
- اسپاتیفای
- رددیت
- فیسبوک

ادامهٔ دوره در دست تالیف است.
جهت اطلاع از زمان انتشار آموزش بعدی کانال تلگرام سکان آکادمی عضو شوید.

مخاطبین این دوره چه کسانی هستند؟
اساساً این دوره برای برنامه‌نویسان مبتدی در نظر گرفته شده است که تجربهٔ چندانی در حوزهٔ برنامه‌نویسی ندارند اما در عین یکسری جزئیاتی نیز درون این دوره گنجانده شده که برای برنامه‌نویسان باتجربه نیز اثربخش هستند.

آیا این دوره پیش‌نیاز خاصی دارد؟
آشنایی با مفاهیم کلی برنامه‌نویسی برای هر دانشجویی که قصد دارد وارد حوزهٔ توسعه‌ٔ نرم‌افزار شود یک باید است که در همین راستا می‌توانید پیش از شروع این دوره و یا به‌ صورت هم‌زمان دورهٔ آموزش اصول برنامه‌نویسی را بگذرانید. همچنین مطالعهٔ دوره‌های تکمیلی زیر نیز به ارتقاء دانش پایه‌ای دانشجویان کمک خواهد کرد:

قوانین SOLID
آشنایی با الگوهای طراحی
۹۷ چیزی که هر برنامه‌نویسی باید بداند

پس از اتمام این دوره، چه دستاوردهای علمی به‌ دست خواهم آورد؟
دانشجویانی که دورهٔ آموزش زبان برنامه‌نویسی پایتون در سکان آکادمی را بگذرانند، پس از اتمام این دوره مفاهیم کلی این زبان همچون متغیرها، دستورات شرطی، حلقه‌ها و غیره را فرا گرفته مضاف بر اینکه با مباحث تکمیلی‌تری همچون اصول برنامه‌نویسی شییٔ‌گرا (OOP) و غیره نیز آشنا خواهند شد.

آیا امکان بازنشر این دوره از طریق دیگر سایت‌ها وجود دارد؟
بر اساس قوانین سکان آکادمی، هر گونه بازنشر دوره‌های آموزشی بر خلاف قوانین سکان آکادمی بوده، از لحاظ شرعی حرام و از لحاظ حقوقی قابل پیگرد قانونی است.