__name__ là biến built-in cho biết ngữ cảnh thực thi script. Giá trị: "__main__" nếu file đang chạy trực tiếp, hoặc "ten_module" nếu được import.
Kiểm tra giá trị
print(type(__name__)) #print(__name__) # __main__ (khi chạy file này trực tiếp)
2 Tính năng chính
1. Script chạy độc lập (standalone)
# File: standalone.py
def func1():
print(f'Giá trị __name__: {__name__}')
if __name__ == '__main__':
func1()
Chạy python standalone.py → in ra __main__ và gọi func1().
2. Import script khác
# File: main.py
import standalone as sa
print("Chạy script import:")
sa.func1() # __name__ trong standalone giờ là "standalone"
print(f"\nChạy script hiện tại:")
print(f'Giá trị __name__: {__name__}') # __main__
Kết quả
Chạy script import: Giá trị __name__: standalone Chạy script hiện tại: Giá trị __name__: __main__
Tại sao quan trọng?
- Cho phép file vừa làm module (import), vừa làm script (chạy trực tiếp).
- Code trong
if __name__ == "__main__":chỉ chạy khi file là entry point. - Dùng để: test, demo, CLI entry point, benchmark.
Best Practice
# mymodule.py
def public_api():
...
def _private_helper():
...
if __name__ == "__main__":
# Test/demo code here
print("Testing...")
public_api()
Kết luận
__name__ == "__main__" là idiom chuẩn Python để phân biệt "chạy trực tiếp" vs "được import". Luôn bọc code thực thi (test, CLI) trong block này.