📦 فصل ۱۴: ماژولها و پکیجها در پایتون

چرا ماژول و پکیج مهماند؟
وقتی کدها بزرگ و پروژه چندبخشی میشود، بهتر است هر قسمت را جداگانه بنویسی و فقط وقتی لازم شد، آن بخش را در قسمت اصلی برنامه فراخوانی کنی. این کار باعث نظم، قابلیت استفاده مجدد و نگهداری بهتر پروژه میشود.
در پایتون با ماژولها و پکیجها این کار خیلی ساده و استاندارد انجام میشود.
۱۴.۱ ماژول چیست و چطور یک ماژول بسازیم؟
ماژول در پایتون، basically یک فایل *.py هست که توش میتونی فانکشن، کلاس یا حتی کد معمولی بنویسی و بعداً تو برنامههای دیگه با import کردن ازش استفاده کنی.
نمونه ماژول ساده بسازیم:
مثلاً یک فایل به نام my_utils.py کنار پروژهات بذار:
# فایل my_utils.py
def salam(name):
print(f"سلام، {name}!")
def jam(a, b):
return a + b
حالا در فایل اصلی (یا هر فایل دیگه):
import my_utils
my_utils.salam("رضا")
print("جمع:", my_utils.jam(3, 4))
نکته: اگر فایل ماژول کنار فایل برنامهات باشه، بیدردسر پیدا میشه؛ اگر جاش متفاوت بود، باید مسیر رو مدیریت کنی.
۱۴.۲ ماژولهای استاندارد پایتون (built-in modules)
پایتون خودش کلی ماژول آماده داره که میتونی بدون نصب اضافی استفاده کنی، مثل:
- math (محاسبات ریاضی)
- random (تولید اعداد تصادفی)
- os (کار با سیستم عامل)
- sys (ورودی/خروجی و اطلاعات محیط اجرا)
- datetime (مدیریت تاریخ و زمان)
مثال واقعی
import math
print(math.sqrt(16)) # خروجی : 4.0
import random
print(random.randint(1, 10)) # یک عدد تصادفی بین 1 تا 10
۱۴.۳ نصب و استفاده از ماژولهای جانبی (Third-Party Modules)
گاهی تایید میکنی ماژولی که میخوای توی پایتون نیست، پس باید نصبش کنی (مثلاً pandas یا requests):
pip install requests
و بعدش در کدت:
import requests
res = requests.get("https://api.github.com")
print(res.status_code)
۱۴.۴ پکیج چیست و فرقش با ماژول؟
پکیج ساختاری از پوشههاست که شامل چند ماژول میشه. هر پوشه پایتونی که داخلش یک فایل __init__.py (حتی خالی!) گذاشته باشی، یک پکیج حساب میشه.
نمونه:
myproject/
├── main.py
└── tools/
├── __init__.py
├── math_utils.py
└── string_utils.py
حالا میتونی تو main.py اینطوری صدا بزنی:
from tools.math_utils import add
add(1, 2)
یا
import tools.string_utils as su
su.reverse_string("hello")
۱۴.۵ واردکردن و مدیریت ماژولها و پکیجها
- میتونی یک تابع یا کلاس خاص رو وارد کنی:
python from math import sqrt print(sqrt(25)) - یا کل ماژول رو وارد کنی، و از نام ماژول استفاده کنی.
- اگر اسم ماژول بلنده یا دوست داشتی، میتونی یک اسم مستعار (alias) بذاری:
python import numpy as np
🔎 نکات حرفهای
- برای اینکه ساختار پروژهات حرفهای بشه، منطقی تقسیمبندی کن: هر چیز مرتبط رو تو یک فایل یا یک پکیج.
- اسم ماژول و پکیج فقط با حروف کوچک انگلیسی باشه و از اعداد، – یا فاصله استفاده نکن (underline اوکیه).
- اگر برنامه بزرگ شد، ساختار پوشهها رو شبیه به نمونه بالا بچین.
🟩 تمرین عملی
یک ماژول ساده به اسم my_calc.py بساز که دو تابع ضرب و تقسیم دریافت کنه؛ در یک فایل جدا با import کردن از اون استفاده کن.
اگر خواستی پروژهات رو تو پوشه بذار، با ساخت پکیج امتحانش کن!