Chuyển tới nội dung chính

Module, Package & Thư Viện

Giai đoạn 3 – Nâng Cao & Thực Hành · Mục tiêu: Tổ chức code với module/package, cài thư viện bằng pip.


1. Module

Module = file .py chứa hàm, class, biến có thể import:

# toan_hoc.py
PI = 3.14159

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

def giai_thua(n):
if n <= 1: return 1
return n * giai_thua(n - 1)

Import module

import toan_hoc
toan_hoc.cong(3, 5) # 8

from toan_hoc import cong, PI
cong(3, 5) # 8

import toan_hoc as th
th.cong(3, 5) # 8

:::tip Thứ tự import (PEP 8)

import os, json # 1. Thư viện chuẩn
import requests # 2. Thư viện bên thứ 3
from toan_hoc import cong # 3. Module tự viết

:::


2. Module tích hợp sẵn

math

import math
math.sqrt(144) # 12.0
math.ceil(3.2) # 4
math.floor(3.8) # 3
math.factorial(5) # 120
math.gcd(12, 8) # 4

random

import random
random.randint(1, 100) # Số nguyên ngẫu nhiên
random.choice(["A","B","C"]) # Chọn ngẫu nhiên
random.shuffle(ds) # Xáo trộn list
random.sample(ds, 2) # Chọn 2 phần tử không trùng

datetime

from datetime import datetime, date, timedelta

now = datetime.now()
now.strftime("%d/%m/%Y %H:%M") # "15/06/2025 14:30"

ngay_sinh = date(2005, 1, 15)
tuoi = (date.today() - ngay_sinh).days // 365

ngay_mai = date.today() + timedelta(days=1)
FormatÝ nghĩaVí dụ
%dNgày15
%mTháng06
%YNăm2025
%H:%M:%SGiờ:Phút:Giây14:30:45

os

import os
os.getcwd() # Thư mục hiện tại
os.listdir(".") # Liệt kê file/folder
os.path.exists("data.txt") # Kiểm tra tồn tại
os.path.join("data", "file.csv") # Ghép path an toàn
os.makedirs("data/reports", exist_ok=True)

collections

from collections import Counter, defaultdict

Counter(["a","b","a","c","a"]).most_common(2) # [('a',3), ('b',1)]

nhom = defaultdict(list)
nhom["12A1"].append("An")

3. Package

Thư mục chứa nhiều module + __init__.py:

project/
├── main.py
└── utils/
├── __init__.py
├── toan_hoc.py
└── xu_ly_chuoi.py
from utils.toan_hoc import cong

4. pip — Quản lý thư viện

pip install requests # Cài đặt
pip install pandas==2.0.0 # Phiên bản cụ thể
pip install --upgrade requests # Nâng cấp
pip uninstall requests # Gỡ
pip list # Xem đã cài
pip freeze > requirements.txt # Xuất
pip install -r requirements.txt # Cài từ file

Thư viện phổ biến

Thư việnLĩnh vựcMô tả
requestsWebGọi API
pandasDữ liệuXử lý, phân tích
numpyTính toánMảng, số học
matplotlibBiểu đồVẽ đồ thị
flaskWebWeb server nhẹ
openpyxlExcelĐọc/ghi Excel
beautifulsoup4ScrapingThu thập dữ liệu web

5. if __name__ == "__main__"

Code chỉ chạy khi file được chạy trực tiếp, không chạy khi bị import:

# toan_hoc.py
def cong(a, b):
return a + b

if __name__ == "__main__":
print(cong(3, 5)) # Chỉ chạy khi: python toan_hoc.py

Bài tập thực hành

Trắc nghiệm

  1. Lệnh nào import hàm sqrt từ math?

    • A. import sqrt from math
    • B. from math import sqrt
    • C. import math.sqrt
    • D. using math.sqrt
  2. __name__ == "__main__" đúng khi?

    • A. File bị import
    • B. File chạy trực tiếp
    • C. Luôn đúng
    • D. Luôn sai

Thực hành

  1. Tạo module utils.py (kiểm tra số nguyên tố, ƯCLN, đảo chuỗi) → import trong main.py.
  2. Dùng random tạo mật khẩu ngẫu nhiên.
  3. Dùng datetime tính số ngày từ ngày sinh đến nay.
  4. Dùng os liệt kê tất cả file .py trong thư mục hiện tại.

Quay lại: Roadmap · Bài tiếp: Bài 13 – Dự Án Tổng Hợp