Vì không có hàm main() trong Python, khi lệnh chạy chương trình python được đưa cho trình thông dịch, mã ở mức thụt lề cấp 0 sẽ được thực thi. Tuy nhiên, trước khi làm điều đó, nó sẽ xác định một vài biến đặc biệt. __name__ là một trong những biến đặc biệt như vậy. Nếu tệp nguồn được thực thi dưới dạng chương trình chính, trình thông dịch đặt biến __name__ có giá trị “__main__”. Nếu tệp này đang được import từ một mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun.
__name__ là một biến được tích hợp sẵn để đánh giá tên của mô-đun hiện tại. Vì vậy, nó có thể được sử dụng để kiểm tra xem tập lệnh hiện tại đang được chạy riêng hay được import vào một nơi khác bằng cách kết hợp nó với câu lệnh if, như được hiển thị bên dưới.
Hãy xem xét hai tệp riêng biệt File1 và File2.
# File1.py
print ("File1 __name__ = %s" %__name__)
if __name__ == "__main__":
print ("File1 is being run directly")
else:
print ("File1 is being imported")
File2.py
import File1
print ("File2 __name__ = %s" %__name__)
if __name__ == "__main__":
print ("File2 is being run directly")
else:
print ("File2 is being imported")
output
Now the interpreter is given the command to run File1.py.
python File1.py
Output :
File1 __name__ = __main__
File1 is being run directly
And then File2.py is run.
python File2.py
Output :
File1 __name__ = File1
File1 is being imported
File2 __name__ = __main__
File2 is being run directly
Như đã thấy ở trên, khi File1.py được chạy trực tiếp, trình thông dịch đặt biến __name__ là __main__ và khi nó được chạy qua File2.py bằng cách import, biến __name__ được đặt làm tên của tập lệnh python, tức là File1. Do đó, có thể nói rằng nếu __name__ == “__main__” là một phần của chương trình chạy khi tập lệnh được chạy từ dòng lệnh bằng cách sử dụng lệnh như python File1.py.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Tự học ML bằng Python từ cơ bản tới nâng cao.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!