Computer >> Máy Tính >  >> Lập trình >> Python

If __name__ ==__main__:làm gì trong Python?


Khi trình thông dịch Python đọc một tệp nguồn, nó sẽ thực thi tất cả mã được tìm thấy trong đó.

Trước khi thực thi mã, nó sẽ xác định một vài biến đặc biệt. Ví dụ:nếu trình thông dịch python đang chạy mô-đun đó (tệp nguồn) làm chương trình chính, thì nó sẽ đặt biến __name__ đặc biệt có giá trị "__main__". Nếu tệp này đang được nhập từ mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun.

Một lý do để làm điều này là đôi khi bạn viết một mô-đun (tệp .py) nơi nó có thể được thực thi trực tiếp. Ngoài ra, nó cũng có thể được nhập và sử dụng trong một mô-đun khác. Bằng cách thực hiện kiểm tra chính, bạn có thể yêu cầu mã đó chỉ thực thi khi bạn muốn chạy mô-đun dưới dạng chương trình và không yêu cầu nó thực thi khi ai đó chỉ muốn nhập mô-đun của bạn và gọi chính các hàm của bạn.

Ví dụ:nếu bạn có 2 tệp one.py và two.py với mã sau:

one.py:

def func():
    print("func() in one.py")
print("Root of one.py")
if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported")

Two.py:

import one
print("Root of two.py")
one.func()
if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported")

Bây giờ nếu bạn chạy,

$ python one.py

Bạn sẽ nhận được đầu ra:

Root of one.py
one.py is being run directly

Nhưng nếu bạn chạy,

$ python two.py

Bạn sẽ nhận được đầu ra:

Root of in one.py
one.py is being imported
Root of in two.py
func() in one.py
two.py is being run directly