Trong Python, khi bạn viết một chương trình hoặc một module
nhỏ trong một chương trình lớn thì chắc chắn mã nguồn sẽ được lưu dưới dạng là một file có đuôi mở rộng là .py
, ví dụ example.py
chẳng hạn, làm sao để bạn sử dụng file mã nguồn này?
Chắc chắn bạn đã biết sẽ có 2 cách để sử dụng đúng không nào:
Cách 1
: Thực thi mã nguồn Python trực tiếp bằng câu lệnh console của hệ điều hành (Command Line)
Ví dụ $ python example.py
Cách 2
: import
mã nguồn Python vào trong một file mã nguồn Python khác.
Ví dụ mình viết một số hàm trong file Python foo.py
, mình tạo một file Python khác tên là bar.py
, trong file bar.py
mình muốn sử dụng hàm của file foo.py
, mình chỉ việc sử dụng từ khóa import
là xong (cái này thì bạn nào lập trình Python chắc chắn là biết rồi).
# bar.py
import foo
Thì mục đích của câu lệnh if __name__ == "__main__"
dùng để xác định rằng file Python đang được thực thi trực tiếp theo cách 1 hay là đang được import
trong một chương trình Python khác:
Nếu file Python được thực thi trực tiếp bằng Command Line thì biến __name__
sẽ bằng __main__
và một số câu lệnh bên trong hàm if __name__ == "__main__"
sẽ được thực hiện vì if
sẽ trả về True
.
Nếu file Python được import
thành module
của chương trình Python khác thì biến __name__
sẽ bằng tên của chương trình module đó, ví dụ nếu foo.py
được import
trong bar.py
thì biến __name__ = 'bar'
và lệnh if __name__ == "__main__"
trả về False
, tất nhiên một số câu lệnh bên trong hàm if
sẽ không được thực hiện.
Python cho phép điều này để chi?
Giả sử bạn muốn một số đoạn code
chỉ được thực thi khi bạn chạy
trực tiếp bằng Command Line mà không được thực thi khi bị import
thành module
thì bạn sử dụng câu lệnh này, việc này rất hữu ích khi
bạn viết xong một hàm, bạn không chắc là hàm đó có chạy đúng không, bạn sẽ viết thêm một số đoạn code khác ngay bên dưới nó để test thử hàm đó, khi ok rồi, bạn sử dụng lại file Python chứa hàm bạn đã viết ở một chương trình khác thì đoạn code mà lúc bạn viết để test thử bạn có muốn nó cũng thực thi trong khi sử dụng hay không? Tất nhiên là không:
- Một là bạn xóa nó đi.
- Hai là bạn comment đoạn mã nguồn test thử đó lại.
- Ba là sử dụng câu lệnh
if __name__ == "__main__"
và đặt đoạn mã nguồn test thử vào bên trong if
là xong.
Python không muốn bạn phải phiền hà với những chi tiết lặt vặt khi lập trình, đó chỉ là cách giúp bạn lập trình dễ dàng hơn, tránh bị lỗi và xử lý chuyên nghiệp hơn.
Chào mừng đến với cộng đồng Python :)).
Sau khi mình khai báo các hàm xong thì khi gõ câu lệnh là if__name__=='__main__': thì nó báo lỗi chỗ dấu ':' là sao nhỉ
– Cộng đồng Cộng đồng 25.04.2023