پایتونمتوسط۷ دقیقه مطالعهPython 3.12+

ماژول‌ها و پکیج‌ها

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

آنچه در این درس می‌آموزید

  • از ماژول‌های استاندارد با import و from و نام مستعار استفاده کنید
  • ماژول شخصی بسازید و در فایل دیگری فراخوانی کنید
  • با if __name__ == "__main__" اسکریپت اجراشدنی از کتابخانه جدا کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب
پیش‌نیاز: کار با فایل‌ها

تمام کدهای این دوره تا اینجا در تک‌فایل جا گرفتند؛ اما پروژهٔ واقعی هزاران خط دارد و تک‌فایلِ بزرگ غیرقابل‌نگهداری می‌شود. ماژول (Module) یعنی یک فایل پایتون که تعریف‌هایش در فایل‌های دیگر قابل استفاده است؛ و پکیج (Package) پوشه‌ای از ماژول‌هاست. با این دو، برنامه به قطعه‌های معنادار تقسیم می‌شود و از صدها تابع آمادهٔ پایتون هم می‌توانید استفاده کنید.

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

ماژول‌های آمادهٔ استاندارد

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

math_demo.py
import math

print(math.sqrt(16))
print(math.pi)
print(math.floor(3.7))
خروجی کد

4.0 3.141592653589793 3

دستور import ماژول را در دسترس می‌گذارد و دسترسی به اعضایش با نقطه انجام می‌شود: math.sqrt یعنی «تابع sqrt در ماژول math». جذر ۱۶ عدد اعشاری 4.0 است و math.pi همان ثابت معروف ریاضی است.

شکل‌های دیگر import

alias.py
from math import sqrt

print(sqrt(25))

import random
random.seed(42)
print(random.randint(1, 10))
خروجی کد

5.0 2

from math import sqrt فقط همان عضو را می‌آورد تا مستقیم صدایش کنید؛ برای عضوهای پرتکرار خواناتر است. import X as Y هم نام مستعار می‌دهد؛ در پروژه‌های داده بارها import numpy as np را می‌بینید. ماژول random عدد تصادفی می‌سازد و random.seed(42) بذر تصادف را ثابت می‌کند: با بذر ثابت، دنبالهٔ «تصادفی» در هر اجرا یکسان می‌ماند؛ ویژگی لازم برای تست و بازتولید نتیجه.

ماژول خودتان را بسازید

هر فایل با پسوند .py یک ماژول است. فرض کنید فایل utils.py این‌قدر داشته باشد:

utils.py
def greet(name):
    return f"Hello {name}!"

و در همان پوشه، فایل main.py آن را فراخوانی کند:

main.py
from utils import greet

print(greet("Sara"))
خروجی کد

Hello Sara!

وقتی main.py اجرا می‌شود، پایتون utils.py را در همان پوشه پیدا می‌کند و تابع greet را وارد می‌کند. تعریف یک بار نوشته شده و هر فایلی که به آن نیاز دارد import می‌کند؛ همان اصل «یک بار تعریف، هر جا استفاده» که در درس توابع دیدید.

پکیج؛ ماژول‌های سازمان‌یافته

پکیج پوشه‌ای از ماژول‌هاست که فایل __init__.py دارد؛ این فایل حتی می‌تواند خالی باشد و فقط نشان می‌دهد «این پوشه یک پکیج است»:

text
shop/
    __init__.py
    prices.py

import از درون پکیج نقطه‌دار است:

app.py
from shop.prices import total

هرچه پروژه بزرگ‌تر شود، پکیج‌ها مرزهای منطقی می‌سازند: قیمت‌ها در shop.prices، کاربران در shop.users و هر قطعه مسئولیت روشن خودش.

اسکریپت یا کتابخانه؟

الگوی زیر را در کد پایتون‌های واقعی زیاد می‌بینید:

script.py
def area(w, h):
    return w * h

if __name__ == "__main__":
    print(area(3, 4))
خروجی کد

12

وقتی فایل را مستقیم اجرا می‌کنید، متغیر ویژهٔ __name__ مقدار "__main__" دارد و بلوک شرط اجرا می‌شود؛ وقتی همان فایل در جای دیگری import شود، این مقدار تغییر کرده و بلوک نادیده گرفته می‌شود. نتیجه: کد آزمایشی و اجرای مستقیم از تعریف‌های قابل import جدا می‌ماند.

جدول ماژول‌های پرکاربرد

ماژول کاربرد
math توابع ریاضی و ثابت‌ها
random اعداد و انتخاب‌های تصادفی
datetime تاریخ و زمان
json تبدیل داده به متن و برعکس
os پوشه‌ها و فایل‌های سیستم‌عامل
csv خواندن و نوشتن فایل‌های جدولی

نمونه‌ای کوچک از datetime؛ تاریخ اینجا ثابت ساخته شده تا خروجی قطعی باشد، ولی در برنامهٔ واقعی date.today() تاریخ امروز را می‌دهد:

date_demo.py
from datetime import date

today = date(2026, 10, 30)
print(today.year)
print(today.strftime("%Y/%m/%d"))
خروجی کد

2026 2026/10/30

تمرین‌ها

تمرین

تمرین ۱ — وتر با ماژول ریاضی

با استفاده از from math import sqrt تابعی به نام hypotenuse بنویسید که دو ضلع قائم مثلث قائم‌الزاویه بگیرد و وتر را با رابطهٔ فیثاغورس برگرداند؛ برای ۳ و ۴ نتیجه باید 5.0 شود.

python
# Write your code here
نمایش راه‌حل
python
from math import sqrt

def hypotenuse(a, b):
    return sqrt(a ** 2 + b ** 2)

print(hypotenuse(3, 4))
خروجی کد

5.0

::: :::

خلاصه

  • هر فایل .py یک ماژول است و با import در فایل‌های دیگر قابل استفاده.
  • from X import Y عضو مشخصی می‌آورد و import X as Y نام مستعار می‌دهد.
  • پکیج پوشه‌ای از ماژول‌ها با __init__.py است و importاش نقطه‌دار است.
  • if __name__ == "__main__": فایل را هم کتابخانه نگه می‌دارد هم اسکریپت اجراشدنی.
  • کتابخانهٔ استاندارد پاسخ بیشتر نیازهای رایج است؛ نام فایل‌هایتان را با آن یکی نکنید.

کد را فایل‌بندی و سازمان‌دهی کردید؛ در درس بعدی به مهم‌ترین الگوی طراحی در پایتون می‌رسیم: کلاس و شیء.

منابع و ارجاع‌ها

درس‌های مرتبط