🎯 Mục Tiêu
- Khám phá mô hình cấu trúc tổ chức Code thực sự ngoài doanh nghiệp.
- Học cách kết nối (Import) vô số tính năng viết sẵn, không phải còng lưng code toán học lại từ đầu.
- Phân biệt giữa
importtoàn bộ vàfrom... import...chọn lọc. - Thiết kế gói
Packagecủa riêng bạn với file lõi__init__.py. - Lý giải cấu trúc trứ danh của Python:
if __name__ == "__main__":
Phân Phối Code với Modules
Khi Project của bạn dài 20.000 dòng code, bạn không thể nhét hết vào 1 file main.py. Nó quá rối! Bạn chia file math_helper.py để chứa hàm làm Toán, database.py để lưu Database. Mỗi 1 tệp đuôi .py đó được gọi danh xưng chuẩn là một Module.
Bây giờ bạn muốn kết nối sức mạnh từ 1 File khác sang File bạn đang đứng? Hãy dùng import.
Cú Pháp Import Phổ Biến
Cách 1: Bê cả mâm (Import toàn bộ)
Khi bạn bê nguyên Module, muốn móc hàm bên trong bạn phải gọi THEO HỌ của nó.
import math
# Gọi lệnh thông qua cấu trúc Dấu Chấm: ten_module.ten_ham
can_bac_hai = math.sqrt(16)
print(can_bac_hai) # 4.0
Cách 2: Bí Danh Rút Gọn (Alias)
Cái tên thư viện quá dài (ví dụ matplotlib.pyplot) mà gọi ngàn lần thì mỏi tay. Hãy đặt Biệt danh chữ viết tắt cho tệp tin đó bằng as.
import pandas as pd
import numpy as np
# Giờ chỉ việc xài:
# my_data = pd.read_csv("file.csv")
Cách 3: Bốc đúng thứ cần từ mâm (from ... import ...)
Cách này giúp nhẹ Ram và không phải ghi họ tên file khi gọi hàm.
# Gọi anh Pi và anh Sqrt trong gia đình Math thôi.
from math import pi, sqrt
# Gọi trực tiếp tên thật như con cháu ruột trong nhà
print(pi) # 3.14159...
print(sqrt(9)) # Ra thẳng 3.0 mà không cần gõ math.sqrt
Package là gì?
Nếu File .py gọi là Module, thì 1 Thư Mục to đùng Chứa Hàng Chục cái Module gọi là Package (Gói). Để Python chịu nhận diện “Đây không phải cái Thư mục Win 10 bình thường, đây là hệ thống Code Package!”, bạn T BẮT BUỘC phải tạo một file có tên __init__.py (thường bỏ trống ruột) để bên trong thư mục đó.
Cấu trúc thư mục:
my_app/
__init__.py
database/
__init__.py
models.py
ui/
__init__.py
window.py
Cách gọi ở file gốc: from my_app.database.models import UserInfo
Bí Mật của Dòng Cản Trở Huyền Thoại: if __name__ == "__main__":
Giả sử bạn có module tinh_toan.py. Trong file đó ngoài các Hàm, bạn quẹt thêm 1 hai dòng print("Tui đang test file") ở tít cuối. Hễ cứ một ai đó bên file main.py gõ chữ import tinh_toan, đoạn in “Tui đang test” lập tức Vô duyên vô cớ BỊ TUÔN RA dù người ta chưa gọi cái hàm nào cả. Vì lệnh import mang ý nghĩa là Chạy Rà Soát lại toàn bộ File 1 lần.
Đó là lúc Cấu trúc Huyền thoại này cứu rỗi Developer:
# File tinh_toan.py
def Cong(a, b):
return a + b
# Đóng rào cảnh báo!
if __name__ == "__main__":
# Chỉ khi bạn TRỰC TIẾP click "Run" thẳng mặt file tinh_toan.py thì khối lệnh dưới mới mọc ra màn hình
print("Testing chạy thử file:")
print(Cong(2,5))
# Còn nếu file `main.py` chót gõ chữ import tinh_toan, thì cái khoá __main__ này sẽ khóa sập hầm, ẩn giấu giùm bạn những đoạn Code dơ, kịch bản Test cá nhân. Không tuôn rác sang nhà hàng xóm.
💡 Key Takeaways
- Khi gọi
import math, mọi thứ trongmathđều bị kéo vào RAM. Nếu chỉ cần cái hàm cộng, dùngfrom math import sum. - Luôn phải nặn cái file rỗng ruột
__init__.pykhi muốn thiết kế 1 cục Folder Package lớn chuẩn chỉnh. - Mọi khối code phục vụ Mục Đích Chạy Thử (Test) phải bị lùi dòng nhốt chặt vào phía sau cánh cửa an ninh
if __name__ == "__main__":để tính năng Code có tái sử dụng ở Nơi khác không bị lôi kéo theo rác.
➡️ Bài Tiếp Theo Lesson 16 – Built-in Functions

