Các Vấn Đề Thường Gặp trong Python - [4] Các Script Thiếu __main__

By JoeVu, at: 20:40 Ngày 13 tháng 1 năm 2023

Thời gian đọc ước tính: __READING_TIME__ minutes

Các Vấn Đề Thường Gặp trong Python - [4] Các Script Thiếu `__main__`
Các Vấn Đề Thường Gặp trong Python - [4] Các Script Thiếu `__main__`

Python scripts thường cần được chạy để thực hiện các tác vụ cụ thể hoặc tạo ra các kết quả nhất định. Tuy nhiên, nếu script không được viết đúng cách, hoặc nếu nó không bao gồm câu lệnh __main__, nó sẽ không thể chạy đúng cách.

 

Trong bài viết này, chúng ta sẽ thảo luận về các vấn đề phổ biến của Python liên quan đến các script không có __main__, và cách khắc phục chúng.

 

__main__ là gì?

 

Câu lệnh __main__ là một câu lệnh đặc biệt được chạy khi một script được thực thi. Dòng if __name__ == "__main__" cho phép bạn thực thi mã khi tệp chạy như một script, nhưng không phải khi nó được nhập vào như một module.

 

Vấn đề tiềm ẩn với __main__ là gì?


Hãy xem xét các ví dụ bên dưới có/không có if __name__ == "__main__"

 

script_1.py

 

def greeting(name):
    print(f"Hello {name}")

greeting("Joe")


script_2.py

 

import script_1

script_1.greeting("Snow")


Chạy

 

python script_1.py
python script_2.py


Kết quả mong đợi là 

 

Hello Joe
Hello Snow


Tuy nhiên, kết quả thực tế là

 

Hello Joe
Hello Joe
Hello Snow


Lý do: Khi script_1 được nhập vào trong script_2, mã nguồn của script_1 được thực thi ngay lập tức. Đó là lý do tại sao dòng "Hello Joe" được hiển thị 2 lần trong kết quả.


Để khắc phục điều này, chúng ta cần thêm thành ngữ if __name__ == "__main__" vào script_1.py

 

script_1.py

 

def greeting(name):
    print(f"Hello {name}")

if __name__ == "__main__":
    greeting("Joe")


script_2.py

 

import script_1

if __name__ == "__main__":
    script_1.greeting("Snow")


Lý do: Khi bạn thực thi script_2.py, nó nhập script_1.py, tuy nhiên, trong script_1.py, __name__ không bằng __main__, __name__ bây giờ là "script_1". Đó là lý do tại sao dòng greeting("Joe") không được thực thi.

 

Lợi ích bổ sung của việc sử dụng __main__

 

  1. Tránh thực thi không mong muốn – Đảm bảo rằng logic script chỉ chạy khi được dự định.
     

  2. Khuyến khích mã mô-đun – Tạo điều kiện cho việc tái sử dụng bằng cách cho phép các hàm được nhập mà không tự động thực thi mã cụ thể của script.
     

  3. Khắc phục lỗi tốt hơn – Giúp chạy các trường hợp kiểm thử riêng biệt trong một script mà không ảnh hưởng đến việc nhập.

 

Kết luận


Câu lệnh __main__ là một phần mã quan trọng cần thiết để một script Python được thực thi chính xác. Nếu không có câu lệnh __main__, script sẽ không thể chạy. Nếu bạn đã viết một script mà không có câu lệnh __main__, bạn nên thêm nó để đảm bảo rằng script có thể thực thi được.

 

Tài liệu tham khảo

 

Tag list:
- Python
- Mistake
- Problem
- Script
- __main__

Liên quan

Python

Đọc thêm
Python

Đọc thêm
Python

Đọc thêm

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.