
Mình vẫn thấy nhiều người đối xử với “dấu gạch dưới” trong Python như thể nó là “bộ kiểm soát truy cập” (access modifiers). Điều này dẫn đến lỗi rối rắm và code thì không thực sự private.
Nói thẳng luôn: Python không ép buộc kiểm soát truy cập theo kiểu Java hay C#. Không có rào chắn thật sự giữa private / protected / public. Thay vào đó, dấu gạch dưới chủ yếu là tín hiệu đặt tên.
Khi bạn viết _helper(self):, đây là gợi ý mạnh mẽ rằng method này dùng nội bộ. Python không cấm bạn gọi nó (u._helper()), nhưng đây là một quy ước bạn nên tôn trọng.
Khi bạn viết __secret(self):, Python thực hiện name mangling, biến đổi tên thuộc tính thành _User__secret. Nó khó truy cập hơn, nhưng hoàn toàn không bị chặn!
Hãy dùng dấu gạch dưới để nói đúng sự thật về cách bạn mong code sẽ được sử dụng:
_name: Thuộc nhóm nội bộ-ish; đừng dựa vào nếu bạn không thật sự muốn__name: Tránh collision nhờ mangling; vẫn không phải private đúng nghĩaThay vì tự hỏi “làm sao để biến thứ này thành private?”, hãy hỏi: “Đây là một tính năng API ổn định, hay chỉ là chi tiết triển khai mà sau này mình có thể đổi?”. Thay đổi tư duy này sẽ giúp bạn code dễ dàng hơn rất nhiều.
Tiền tố gạch dưới đơn (`_name`) thực sự có tác dụng gì khi runtime?
Làm sạch log AI CLI, tạo biểu thức cron, giải mã JWT và tính quyền chmod offline.

Danh sách các tính năng cú pháp Python thực dụng giúp giảm rối và hạn chế lỗi trong code hằng ngày.
Đọc tiếp
Tài liệu tham khảo tiêu chuẩn cho môi trường production về lập trình bất đồng bộ trong Python: cơ chế nội bộ của event loop, structured concurrency với TaskGroup, free-threaded CPython 3.13, connection pooling, và profiling event loop starvation.
Đọc tiếp
Nắm vững các mẫu kiểm tra kiểu nghiêm ngặt mypy nâng cao bằng ParamSpec, TypeVarTuple, Protocols và custom type guards trong các codebase Python lớn.
Đọc tiếp