آموزش پکیج ها در پایتون

پکیج ها در پایتون (به زبان ساده)

شناسنامه درس

آنچه در این جلسه خواهیم گفت : 

پیش نیازهای این جلسه :

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

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

پکیج ها در پایتون

ما اگر بخواهیم فایل های خود را در کامپیوتر ذخیره کنیم ، آنها را  دسته بندی می کنیم و هر کدام را به صورت مرتب در محل هایی جداگانه قرار می دهیم. مثلا  اگر یک پوشه به نام fun داریم که دارای فایل های زیادی است. میتوانیم آن ها را دسته بندی کنیم. مثلا آهنگ ها را در پوشه music، فیلم ها را در پوشه movie و … قرار می دهیم. 

پایتون هم از ایده بالا استفاده می کند. به زبان ساده تر وقتی حجم برنامه ها از یک حدی بالاتر می روند ، ما ماژول هایی که شبیه به یکدگیر هستند را در یک پکیج قرار می دهیم و ماژول های متفاوت را در پکیج های متفاوت می گذاریم. با این کار مدیریت پروژه ساده تر می شود و راحتتر می توانیم اشکال برنامه ها را پیدا کنیم. 

استفاده از ایده دسته بندی فایل ها در پایتون

همانطور که یک فولدر میتوانید برای خودش یک زیرفولدر داشته باشد ، پکیج ها هم می توانند شامل زیرپکیج ها و ماژول ها باشند. 

هر فولدر پکیج حتما باید دارای یک فایل به نام init__.py__ باشد تا پایتون متوجه شود که با یک پکیج روبرو است. این فایل میتواند یک فایل خالی باشد. اگر چه برخی از تنظیمات اولیه آن پکیج معمولا در آن فایل قرار داده می شود. 

فرض کنید که ما میخواهیم یک بازی را به کمک پایتون بسازیم. یکی از حالت هایی که ما میتوانیم در آن پکیج ها و ماژول ها را سازماندهی کنیم ، در شکل زیر آورده شده است. 

پکیج ها در پایتون

بیایید در مورد شکل بالا کمی بیشتر فکر کنیم. 

در شکل بالا ابتدا یک فایل init__.py__ وجود دارد که به پایتون می گوید این فولدر (یعنی فولدر game) یک پکیج می باشد. 

در کنار این فایل ما با سه فولدر دیگر نیز مواجه هستیم. این سه فولدر هر کدام خودشان یک پکیج هستند. پس باید یک فایل init__.py__ کنار خود داشته باشند ، که همین اتفاق نیز افتاده است. 

در داحل این فولدرها دیگر ما با ماژول ها روبرو هستیم و عملا کدهای داخل این ماژول ها را ما در برنامه خود مورد استفاده قرار می دهیم.

مشاهده می کنید که به کمک تقسیم بندی بالا ، چقدر کدهای ما تمیز تر شدند و دارای ساختار شدند. حال اگر صدای آن بازی دچار مشکل شد ، ما میدانیم باید به کجا رجوع کنیم و مشکل احتمالا از کجاست. 

روش import کردن یک ماژول از یک پکیج

با استفاده از عملگر dot ( . ) میتوانیم ماژول ها را از پکیج ها فراخوانی کنیم و به پکیج بگوییم که میخواهیم از فلان ماژول استفاده کنیم. این کار به چند روش امکان پذیر است.  

روش اول : مشکل بالا اگر بخواهیم ماژول start را فراخوانی کنیم ، کافی است تا از دستور زیر استفاده کنیم : 

حال فرض کنید که این ماژول دارای تابعی به نام select_difficulty() باشد. برای استفاده از این تابع باید کل اسم پکیج ها و زیرپکیج ها آورده شود. یعنی : 

که می بینید جالب نیست. در اینجاست که میتوانیم از روش دوم استفاده کنیم.

 روش دوم : اگر بخواهیم از این کار خودداری کنیم ، کافی است تا از دستور form….import استفاده کنیم. یعنی :

حال میتوانیم از این دستور به شکل زیر استفاده کنیم  :

روش سوم : حالت سوم برای وقتی است که بخواهیم از خود تابع بدون هیچ پیشوندی استفاده کنیم. برای این کار کافی است تا خودنام تابع(یا کلاس یا متغیر) را مطابق زیر فراخوانی کنیم:

در این صورت برای استفاده از این تابع میتوانیم دستور زیر را بنویسیم : 

اگر چه این روش آسان تر است ولی اصلا پیشنهاد نمی شود. مشخص کردن نام ماژول ها و پکیج ها باعث می شود تا احتمالا یکسان بودن متغیرها و نام توابع به صفر برسد. در غیر این صورت ممکن است با دو تابع با نام یکسان روبرو شوید که باعث ایجاد خطا در برنامه می شود. 

در پایان این جلسه تمریناتی آورده شده است که به حل آن بسیار تاکید داریم. لطفا پس از انجام تمرینات ، آن ها را در قسمت نظرات بیاورید تا در صورت ایراد تصحیح شود و در صورت صحیح بودن نیز سایر دوستان استفاده کنند. 
تمارین:

 سوال : کتابخانه matplotlib را بر روی سیستم خود نصب کنید و سپس از این کتابخانه ، پکیج pyplot که زیر پکیجی از پکیج matplotlib می باشد را به عنوان plt به برنامه اضافه کنید.

خوب دوستان. به پایان این جلسه رسیدیم. مثل همیشه میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید. 

پیشنهاد عضویت VIP

برای ثبت نام به عنوان عضو VIP ابتدا باید در سایت ثبت نام کلیک و سپس نسبت به افزایش اکانت خود اقدام فرمایید. 

0 پاسخ

دیدگاه خود را ثبت کنید

Want to join the discussion?
Feel free to contribute!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *