آموزش پکیج در پایتون : ساخت package یا بسته در python

خرید بک لینک
<a href='/last-search/?q=آموزش'>آموزش</a> <a href='/last-search/?q=ساخت'>ساخت</a> <a href='/last-search/?q=پکیج'>پکیج</a> در <a href='/last-search/?q=پایتون'>پایتون</a> و کار با package

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

برای اینکه متوجه همهٔ توضیحات این آموزش شوید، بهتر است با ماژولها آشنا باشید. اگر آشنا نیستید جلسه قبل دوره رایگان (ماژول در پایتون) را ببینید.

یک ماژول همان فایل کدهایمان بود که از آن در کدهای دیگر استفاده میکردیم. معمولاً هر ماژول یک هدف خاص را دنبال میکند. این نوع دستهبندی کدها، به ما کمک میکند علاوه بر مدیریت آسان تغییرات، بتوانیم از ماژولهایمان در پروژههای دیگر استفاده کنیم.

فهرست محتوای آموزش

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

به زبان خیلی ساده، یک پکیج در پایتون (Python Package) تعدادی ماژول است که درون یک فولدر (پوشه) قرار گرفتهاند! معمولاً ماژولهایی که در یک پکیج قرار میگیرند هدف مشابهی دارند. مثلاً بخش مدیریت سطح دسترسی (authentication) یک برنامه یا مدیریت کاربران میتواند یک پکیج باشد.

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

فرض کنید دو ماژول برای ورود و خروج کاربران داریم. برای سادگی کدها، هر کدام صرفاً یک تابع برای چاپ پیامی خاص دارند: (پیشنهاد: کار با تابع در پایتون)

# login.pydef do_login():    print("logging in ...")
# logout.pydef do_logout():    print("Logging out ...")

فایلهای login.py و logout.py را درون یک فولدر به نام auth قرار میدهم.

ساخت package در پایتون

برای اینکه به پایتون بفهمانیم این فولدر یک فولدر معمولی نیست و یک پکیج است، نیاز به فایلی به نام __init__.py در کنار این فایلها داریم.

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

بنابراین ممکن است بنا به نیازتان بخواهید درون این فایل توابع، متغیرها یا کلاس خاصی را تعریف کنید. (در جلسات بعدی دوره رایگان با تعریف کلاس در پایتون آشنا خواهیم شد.)

فراخوانی پکیج پایتون

حالا یک فایل به نام app.py در کنار فولدر ایجاد میکنم تا در آن از پکیجی که ساختیم استفاده کنم؛ بنابراین ساختار فایلهای من تا الآن چیزی شبیه به درخت زیر شده است:

ساختار پکیج ساده در پایتون
ساختار فایلهای پکیج در این مثال

مشابه فراخوانی ماژولها، با دستور import میتوانیم ماژولهای پکیج را صدا زده و استفاده کنیم. نام فولدر پکیج در ابتدا و سپس نام ماژول قرار میگیرد. این دو با علامت نقطه (.) جدا میشوند.

# app.pyimport auth.loginauth.login.do_login()

در قطعه کد زیر از دستور from … import برای استفاده از یک یا چند ماژول استفاده کردهام:

from auth import login, logoutlogin.do_login()logout.do_logout()

به همین سادگی توانستیم یک پکیج ساده با دو ماژول ایجاد کرده و از آن استفاده کنیم.

کار با پکیج پیشرفته

همهٔ ما فایلهایی که در کامپیوتر یا موبایلهایمان داریم را در فولدرها و زیرفولدرها دستهبندی میکنیم. در پکیج بندی پایتون نیز میتوانیم از ساختار سلسه مراتبی فولدرها کمک بگیریم.

یعنی حتماً نیاز نیست پکیج ما یک فولدر شامل چندین ماژول باشد؛ بلکه هر پکیج میتواند زیرپکیجهایی نیز داشته باشد. (اصطلاحاً sub-package)

در اینجا چند فایل و پکیج مختلف در کنار کد پایتون خود ایجاد کردهام تا در ادامه نحوه فراخوانی آنها را با هم بررسی کنیم.

نمونه ساختار پکیج تودرتو python
نمونه ساختار یک پکیج پیچیدهتر در پایتون

دقت کنید که در تمام فولدرها فایل __init__.py را ایجاد میکنیم.

مشابه چیزی که تا الآن داشتیم، میتوانیم مستقیماً پکیجها را در برنامه import کنیم:

import app.auth.login# usage:app.auth.login.do_login()

برای سادهتر شدن استفاده از توابع، کلاسها و متغیرهای درون هر ماژول (متغیر پایتون)، شاید بهتر باشد از ساختار from import استفاده کنیم.

اینطوری زمان صدا زدن توابع فقط کافی است اسم ماژول را در ابتدای آن قرار دهیم:

from app.auth import loginlogin.do_login()

اگر میخواهید فقط از یک تابع، کلاس یا متغیر درون ماژول استفاده کنید، import مستقیم همان یک مورد نیز روش مناسبی است.

from app.auth.login import do_logindo_login()

پیشنهاد میکنم از این حالت فقط زمانی استفاده کنید که قرار است یکی دو مورد را از پکیج import کنید. در صورتیکه تعداد زیادی را با namespace کامل (همین حالتی که بدون نوشتن نام پکیج است) وارد برنامه کنید، پیچیدگی کدتان زیاد خواهد شد.

کار با ماژولها در بسته پایتون

احتمالاً تا الآن حدس زده باشید که میتوانیم از alias برای ماژول یا مواردی که ایمپورت میکنیم نیز استفاده کنیم. مثلاً در قطعه کد زیر، ماژول login از پکیج app.auth را با نام مستعار lgn در کد پایتون خود فراخوانی کردهام:

from app.auth import login as lgnlgn.do_login()

البته بهتر است از اسامی مخففی که به سختی متوجه معنی آنها میشویم کمتر استفاده کنیم. مثلاً اینجا lgn فقط برای آموزش بود و در پروژه واقعی بهتر است استفاده نشود.

اگر خاطرتان باشد، ماژول utils که در جلسه قبلی ایجاد کرده بودیم، علاوه بر یک تابع، حاوی یک کلاس و یک لیست از نامها بود. (لیست در پایتون)

در قطعه کد زیر این ماژول از پکیج app.tools خودم را فراخوانی کرده و لیست و کلاس را استفاده میکنم.

from app.tools import utilsprint(utils.sample_names)p1 = utils.Person("Omid Rajaei")

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

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

ما را در سایت سون لرن • آموزش دنبال می‌کنید

برچسب: نویسنده: استخدام کار بازدید: 214 تاريخ: چهارشنبه 28 ارديبهشت 1401 ساعت: 16:20

صفحه بندی

خبرنامه