Một module là một file .py đơn lẻ; một package là một thư mục chứa các module. Import cho phép bạn dùng code từ các module khác, tổ chức một chương trình thành các phần có thể tái sử dụng.
Module và import
(): a + b
PI =
# main.py — các cách import khác nhau
import math_utils # import toàn bộ module
math_utils.add(2, 3) # truy cập qua tên module
from math_utils import add, PI # import các tên cụ thể
add(2, 3) # dùng trực tiếp
from math_utils import add as plus # import với một bí danh
import numpy as np # quy ước đặt bí danh phổ biến
mypackage/
__init__.py ← đánh dấu nó là một package (có thể rỗng)
module_a.py
subpackage/
__init__.py
module_b.py
from mypackage.module_a import something
from mypackage.subpackage.module_b import other
File __init__.py đánh dấu một thư mục là một package (và có thể chạy code khởi tạo package hoặc định nghĩa những gì from package import * phơi bày).
if __name__ == "__main__"def main():
print("running as a script")
if __name__ == "__main__": # True chỉ khi chạy trực tiếp, không phải khi được import
main()
Điều này cho phép một file vừa hoạt động như một module có thể import vừa như một script có thể chạy — code bên dưới nó chỉ chạy khi file được thực thi trực tiếp (python file.py), không phải khi được import. Một thành ngữ Python gần như phổ quát.
import sys
sys.path # danh sách các thư mục Python tìm kiếm để import
# bao gồm: thư mục hiện tại, các package đã cài (site-packages), thư viện chuẩn
import os, json, datetime # thư viện chuẩn — "pin đi kèm"
import requests # bên thứ ba — cài qua pip từ PyPI
Module và package là cách bạn tổ chức code Python thành các đơn vị có thể tái sử dụng, dễ bảo trì thay vì một file khổng lồ — điều cơ bản cho bất kỳ dự án không tầm thường nào.
Hiểu các kiểu import, cấu trúc package (__init__.py), thành ngữ if __name__ == "__main__" (hành vi kép script/module), và cách Python tìm module (sys.path) là điều thiết yếu để cấu trúc dự án, tái sử dụng code, và dùng thư viện chuẩn cùng hệ sinh thái PyPI khổng lồ.
Lỗi import và sự bối rối về cấu trúc là những trở ngại ban đầu phổ biến mà kiến thức này giải quyết.