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ĩa | Ví dụ |
|---|---|---|
%d | Ngày | 15 |
%m | Tháng | 06 |
%Y | Năm | 2025 |
%H:%M:%S | Giờ:Phút:Giây | 14: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ện | Lĩnh vực | Mô tả |
|---|---|---|
requests | Web | Gọi API |
pandas | Dữ liệu | Xử lý, phân tích |
numpy | Tính toán | Mảng, số học |
matplotlib | Biểu đồ | Vẽ đồ thị |
flask | Web | Web server nhẹ |
openpyxl | Excel | Đọc/ghi Excel |
beautifulsoup4 | Scraping | Thu 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
-
Lệnh nào import hàm
sqrttừmath?- A.
import sqrt from math - B.
from math import sqrt - C.
import math.sqrt - D.
using math.sqrt
- A.
-
__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
- Tạo module
utils.py(kiểm tra số nguyên tố, ƯCLN, đảo chuỗi) → import trongmain.py. - Dùng
randomtạo mật khẩu ngẫu nhiên. - Dùng
datetimetính số ngày từ ngày sinh đến nay. - Dùng
osliệ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