~/icsd.ir — bash
SYSTEM_ONLINE

ماژول و pip

قدرت اصلی پایتون در اکوسیستم عظیم آن است: بیش از ۴۰۰هزار پکیج روی PyPI! در این فصل یاد می‌گیریم چطور از ماژول‌های استاندارد، پکیج‌های خارجی با pip و محیط مجازی استفاده کنیم.

قدرت اصلی پایتون در اکوسیستم عظیم آن است: بیش از ۴۰۰هزار پکیج روی PyPI! در این فصل یاد می‌گیریم چطور از ماژول‌های استاندارد، پکیج‌های خارجی با pip و محیط مجازی استفاده کنیم.

دستور import

# import کامل ماژول
import math
print(math.pi)              # 3.141592653589793
print(math.sqrt(16))        # 4.0
print(math.factorial(5))    # 120

# import خاص
from math import pi, sqrt
print(pi)                   # حالا بدون math.
print(sqrt(25))             # 5.0

# import همه (توصیه نمی‌شود)
from math import *
print(cos(0))               # 1.0  - اما کلاس‌نما را شلوغ می‌کند

# import با نام مستعار
import math as m
print(m.pi)

import datetime as dt
now = dt.datetime.now()

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

math – ریاضی

import math

print(math.pi)            # 3.14159...
print(math.e)             # 2.71828... (عدد نپر)
print(math.inf)           # بی‌نهایت

print(math.sqrt(16))      # 4.0
print(math.pow(2, 10))    # 1024.0
print(math.log(100, 10))  # 2.0
print(math.log2(8))       # 3.0
print(math.ceil(3.2))     # 4   گرد به بالا
print(math.floor(3.8))    # 3   گرد به پایین
print(math.gcd(12, 18))   # 6   ب.م.م

# مثلثاتی (با رادیان)
print(math.sin(math.pi/2))   # 1.0
print(math.degrees(math.pi)) # 180.0
print(math.radians(180))     # pi

random – تصادفی

import random

# عدد اعشاری بین 0 و 1
print(random.random())          # مثل 0.7351...

# عدد صحیح در بازه
print(random.randint(1, 10))    # شامل هر دو 1 و 10
print(random.randrange(0, 100, 5))  # ضرایب 5

# انتخاب از لیست
fruits = ["سیب", "موز", "پرتقال", "هلو"]
print(random.choice(fruits))         # یکی تصادفی
print(random.choices(fruits, k=3))   # 3 تا (با تکرار)
print(random.sample(fruits, 2))      # 2 تا (بدون تکرار)

# مخلوط کردن
nums = [1, 2, 3, 4, 5]
random.shuffle(nums)
print(nums)

# seed برای نتایج قابل تکرار
random.seed(42)
print(random.random())   # همیشه همان نتیجه با seed یکسان

datetime – تاریخ و زمان

from datetime import datetime, date, time, timedelta

# الان
now = datetime.now()
print(now)              # 2026-05-01 14:30:00.123456

# اجزا
print(now.year)         # 2026
print(now.month)        # 5
print(now.day)          # 1
print(now.hour)         # 14

# امروز
today = date.today()
print(today)

# ساخت تاریخ خاص
birthday = date(1990, 3, 21)
print(birthday)

# اختلاف تاریخ
diff = today - birthday
print(diff.days)        # تعداد روزها

# اضافه کردن
tomorrow = today + timedelta(days=1)
next_week = today + timedelta(weeks=1)
two_hours_later = now + timedelta(hours=2)

# قالب‌بندی
print(now.strftime("%Y-%m-%d %H:%M"))   # 2026-05-01 14:30
print(now.strftime("%A, %d %B %Y"))     # Friday, 01 May 2026

# تبدیل رشته به تاریخ
date_str = "2026-05-01"
parsed = datetime.strptime(date_str, "%Y-%m-%d")

os – سیستم عامل

import os

# مسیر جاری
print(os.getcwd())

# لیست فایل‌ها
files = os.listdir(".")
print(files)

# ساخت پوشه
os.makedirs("data/cache", exist_ok=True)

# بررسی وجود
print(os.path.exists("file.txt"))
print(os.path.isfile("file.txt"))
print(os.path.isdir("data"))

# اطلاعات مسیر
path = "/home/ali/project/file.txt"
print(os.path.dirname(path))    # /home/ali/project
print(os.path.basename(path))   # file.txt
print(os.path.splitext(path))   # ('/home/ali/project/file', '.txt')

# ساخت مسیر cross-platform
config_path = os.path.join("data", "config", "settings.json")

# متغیرهای محیطی
print(os.environ.get("HOME"))
print(os.environ.get("PATH"))
os.environ["MY_VAR"] = "value"

sys – سیستم پایتون

import sys

print(sys.version)              # نسخه پایتون
print(sys.platform)             # win32, linux, darwin

# آرگومان‌های خط فرمان
# python script.py arg1 arg2
print(sys.argv)                 # ['script.py', 'arg1', 'arg2']

# خروج از برنامه
# sys.exit(0)    # 0 موفق، عدد دیگر خطا

# stdin / stdout / stderr
sys.stdout.write("بدون newlinen")
sys.stderr.write("پیام خطاn")

json – کار با JSON

import json

# تبدیل dict به رشته JSON
data = {"name": "علی", "age": 25, "skills": ["Python", "Django"]}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

# تبدیل JSON به dict
parsed = json.loads(json_str)
print(parsed["name"])

# نوشتن در فایل
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# خواندن از فایل
with open("data.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)

pip – نصب پکیج

pip ابزار رسمی پایتون برای نصب پکیج‌ها از PyPI است:

# بررسی نسخه pip
pip --version

# به‌روزرسانی pip
python -m pip install --upgrade pip

# نصب یک پکیج
pip install requests

# نصب نسخه خاص
pip install django==4.2

# نصب با محدوده نسخه
pip install "django>=4.0,<5.0"

# به‌روزرسانی پکیج
pip install --upgrade requests

# حذف پکیج
pip uninstall requests

# لیست پکیج‌های نصب شده
pip list

# جزئیات یک پکیج
pip show django

# جستجو (در PyPI)
pip search keyword

requirements.txt

فایل استاندارد برای فهرست پکیج‌های پروژه:

# requirements.txt
django==4.2.10
requests>=2.31.0
python-dotenv==1.0.0
mysql-connector-python==8.3.0
Pillow>=10.0.0
pandas
numpy
# نصب همه با یک دستور
pip install -r requirements.txt

# تولید requirements از پکیج‌های نصب شده
pip freeze > requirements.txt

محیط مجازی (Virtual Environment)

چرا venv؟ هر پروژه باید پکیج‌های خاص خودش را داشته باشد، بدون تداخل:

# ساخت venv در پوشه پروژه
python -m venv .venv

# فعال‌سازی - ویندوز
.venvScriptsactivate

# فعال‌سازی - لینوکس/مک
source .venv/bin/activate

# حالا نصب‌ها در venv انجام می‌شود
pip install django

# غیرفعال
deactivate
💡 توصیه حرفه‌ای:

برای هر پروژه پایتون، یک venv جداگانه بسازید. در .gitignore پوشه .venv را قرار دهید. در VS Code، Python interpreter را روی .venv/Scripts/python.exe تنظیم کنید.

ماژول‌های شخصی

هر فایل .py یک ماژول است. می‌توانید توابعتان را در فایل جداگانه‌ای بگذارید:

# فایل: utils.py
def greet(name):
    return f"سلام {name}!"

def add(a, b):
    return a + b

PI = 3.14159
# فایل: main.py
import utils

print(utils.greet("علی"))
print(utils.add(5, 3))
print(utils.PI)

# یا
from utils import greet, add
print(greet("زهرا"))

__name__ == “__main__”

# فایل: calculator.py
def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

# این بخش فقط وقتی فایل مستقیم اجرا شود اجرا می‌شود
# نه وقتی import شود
if __name__ == "__main__":
    print("اجرای مستقیم")
    print(add(2, 3))
    print(multiply(4, 5))

پکیج‌ها (پوشه ماژول‌ها)

myproject/
    __init__.py        # یک فایل خالی این را پکیج می‌کند
    main.py
    utils/
        __init__.py
        math_helpers.py
        string_helpers.py
    models/
        __init__.py
        user.py
# در main.py
from utils.math_helpers import add
from models.user import User
پکیج کاربرد
requests کار با HTTP و API
django / flask توسعه وب
numpy / pandas تحلیل داده
matplotlib / plotly نمودار
Pillow پردازش تصویر
beautifulsoup4 Web Scraping
jdatetime تاریخ شمسی
python-dotenv متغیرهای محیطی
pytest تست
black / ruff فرمت‌دهی کد

تمرین فصل

🏋️ تمرین ۱: اسکریپتی بنویسید که با random، یک عدد بین ۱ تا ۱۰۰ تصادفی بسازد و بازی حدس عدد را اجرا کند.
🏋️ تمرین ۲: با datetime، تابعی بنویسید که سال تولد بگیرد و سن کنونی، روز تولد بعدی و تعداد روزهای زندگی را محاسبه کند.
🏋️ تمرین ۳: یک ماژول شخصی helpers.py با چند تابع کاربردی بسازید و در فایل main.py آن را import و استفاده کنید.
🏋️ تمرین ۴: یک محیط مجازی بسازید، پکیج requests را نصب کنید و یک requirements.txt تولید کنید.

جمع‌بندی

  • دستور import با چند شکل مختلف
  • ماژول‌های استاندارد: math، random، datetime، os، sys، json
  • pip برای نصب پکیج از PyPI
  • requirements.txt برای مدیریت وابستگی‌ها
  • محیط مجازی (venv) – الزامی برای پروژه حرفه‌ای
  • ساخت ماژول و پکیج شخصی
  • __name__ == "__main__"

نمایش سایت

رنگ سایت
حالت نمایش
اندازهٔ متن
خوانایی

این تنظیمات فقط روی مرورگر شما ذخیره می‌شود.