hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
      • Spring Boot
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
  • Lập trình Python
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Lập trình Python
Python bài 12: Module, package, import và tổ chức chương trình

Python bài 12: Module, package, import và tổ chức chương trình

  • 18-10-2026
  • Toanngo92
  • 0 Comments

Giáo trình Python miễn phí · Chương 6/12: Hàm, module và tổ chức chương trình · Bài 12/24.

← Bài 11 · Mục lục 12 chương · Bài 13 →

Mục lục

  • Mục tiêu bài học
  • Module là một đơn vị tái sử dụng
  • Ví dụ hai tệp
  • Package và đường dẫn import
  • Quản lý thư viện và cấu hình
  • Lỗi thường gặp và lưu ý
  • Ghi nhớ
  • Tài liệu đối chiếu

Mục tiêu bài học

Chia chương trình thành nhiều tệp, chạy đúng điểm bắt đầu và quản lý thư viện có thể tái tạo.

Module là một đơn vị tái sử dụng

Một tệp .py có thể được import như module. Khi chương trình lớn hơn, tách phần tính toán, nhập xuất và cấu hình giúp thay đổi ít ảnh hưởng nhau. Import module bằng tên không có phần mở rộng .py.

Khi import, Python thực hiện mã ở cấp module trong lần nạp đầu và giữ module trong bộ nhớ đệm của phiên chạy. Do đó không đặt thao tác nhập bàn phím, gửi HTTP hoặc sửa cơ sở dữ liệu ở cấp ngoài nếu chúng không nên tự chạy khi import.

Ví dụ hai tệp

Tạo hoc_phi.py chứa phần tính toán. Tệp main.py là nơi điều phối và in kết quả. Các tệp cần ở cùng thư mục trong ví dụ này; các cách đóng gói phức tạp hơn có thể học sau.

# hoc_phi.py
def tinh_tong(so_buoi, don_gia):
    return so_buoi * don_gia
# main.py
from hoc_phi import tinh_tong

def main():
    tong = tinh_tong(4, 150000)
    print(f"Tổng tiền: {tong:,} đồng")

if __name__ == "__main__":
    main()

Chạy python main.py sẽ in Tổng tiền: 600,000 đồng. Điều kiện __name__ == "__main__" chỉ gọi main() khi tệp được chạy làm chương trình chính; khi import main, phần định nghĩa vẫn được nạp nhưng main() không tự chạy. main là tên theo quy ước, không phải từ khóa.

Package và đường dẫn import

Một package nhóm các module liên quan. Với cách tổ chức truyền thống cho người mới, tạo thư mục hoc_vien có __init__.py và các module bên trong, rồi import hoc_vien.xu_ly hoặc from hoc_vien.xu_ly import ham. Python còn hỗ trợ namespace package không có __init__.py, nhưng chưa cần dùng trong giai đoạn này.

Không sửa sys.path tùy tiện để che lỗi cấu trúc. Kiểm tra thư mục đang chạy, môi trường ảo và tên tệp bị trùng thư viện. Import có tên cụ thể thường rõ hơn import * và giảm nguy cơ ghi đè tên.

Quản lý thư viện và cấu hình

Lưu requirements.txt cho thư viện ngoài. Dùng thư viện chuẩn như pathlib hoặc json thì không cần pip install. Các giá trị bí mật như mật khẩu cơ sở dữ liệu nên đọc từ biến môi trường; đừng đưa trực tiếp vào module để rồi vô tình đăng công khai.

import os
from pathlib import Path

thu_muc = Path("du_lieu")
print(thu_muc.name)
print(os.getenv("HVC_MOI_TRUONG", "development"))

Kết quả:

du_lieu
development

Lỗi thường gặp và lưu ý

  • Không đặt tệp cùng tên với module chuẩn hoặc thư viện đang dùng.
  • Circular import thường cho thấy hai module phụ thuộc lẫn nhau quá chặt; tách phần dùng chung thay vì import chéo ở mọi nơi.

Ghi nhớ

Tách chức năng khỏi điểm chạy, giữ import ít tác dụng phụ và quản lý thư viện theo môi trường. Cấu trúc đơn giản nhưng nhất quán giúp chương trình dễ kiểm thử hơn.

Tài liệu đối chiếu

  • Module và package

← Bài 11 · Mục lục 12 chương · Bài 13 →

Bài viết liên quan:

Giáo trình Python: mục lục 12 chương, 24 bài từ cơ bản đến ứng dụng
Python bài 24: Lock, Queue và thiết kế worker an toàn
Python bài 23: Thread, start, join và concurrency
Python bài 22: Kết nối MySQL và CRUD có transaction
Python bài 21: Gọi HTTP API, xử lý JSON và tải dữ liệu
Python bài 20: Serialization với JSON và pickle
Python bài 19: Đọc ghi tệp, pathlib, UTF-8 và CSV
Python bài 18: Closure, decorator và functools.wraps
Python bài 17: Iterable, iterator, generator và yield
Python bài 16: Type hints, logging và kiểm thử chương trình
Python bài 15: Ngoại lệ, traceback và kỹ năng debug
Python bài 14: Đóng gói, property, kế thừa và đa hình

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Giáo trình Python: mục lục 12 chương, 24 bài từ cơ bản đến ứng dụng

Python bài 24: Lock, Queue và thiết kế worker an toàn

Python bài 23: Thread, start, join và concurrency

Python bài 22: Kết nối MySQL và CRUD có transaction

Python bài 21: Gọi HTTP API, xử lý JSON và tải dữ liệu

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×