1
Mục đích của câu lệnh if __name__ == "__main__" trong Python là gì?
0
Minh Uyên0 đã đăng:

Mình thường thấy các chương trình Python thường hay kèm theo câu if __name__ == '__main__' ở cuối sau khi viết các hàm, ví dụ,

def print_hello():
    print "Hello"

if __name__ == '__main__':
    print_hello()

Mình thử xóa đi câu lệnh này đi, chương trình vẫn chạy bình thường, vậy câu lệnh này dùng để làm gì ạ?

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 25.04.2023
thêm bình luận...
1
PyPi120 đã đăng:

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 :)).

đã bổ sung 5.6 năm trước bởi
Avatar: PyPi PyPi120

AWESOME !!!

Minh Uyên 27.07.2018
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)