Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Biến đặc biệt __name__ trong Python


__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.