Nếu __name__ == __main__ trong python

Nếu bạn chưa quen với Python, bạn có thể nhận thấy rằng có thể chạy tập lệnh Python có hoặc không có phương thức chính. Và ký hiệu được sử dụng trong Python để xác định một (i. e. if __name__ == ‘__main__') chắc chắn không dễ hiểu, đặc biệt đối với những người mới đến

Trong hướng dẫn hôm nay, chúng ta sẽ khám phá và thảo luận về mục đích của một phương thức chính và điều gì sẽ xảy ra khi bạn định nghĩa một phương thức này trong các ứng dụng Python của mình

Mục đích của __name__ là gì?

Trước khi thực hiện một chương trình, trình thông dịch Python gán tên của mô-đun python thành một biến đặc biệt có tên là __name__. Tùy thuộc vào việc bạn đang thực thi chương trình thông qua dòng lệnh hay nhập mô-đun vào mô-đun khác, việc gán cho __name__ sẽ khác nhau

Ví dụ: nếu bạn gọi mô-đun của mình dưới dạng tập lệnh

python my_module.py

sau đó Trình thông dịch Python sẽ tự động gán chuỗi_______1_______1 cho biến đặc biệt __name__. Mặt khác, nếu mô-đun của bạn được nhập vào một mô-đun khác

# Assume that this is another_module.py
import my_module

thì chuỗi

# Assume that this is another_module.py
import my_module
3 sẽ được gán cho __name__

Phương pháp chính hoạt động như thế nào?

Bây giờ, giả sử rằng chúng ta có mô-đun sau, chứa các dòng mã sau

# first_module.py
print('Hello from first_module.py')

if __name__ == '__main__':
print('Hello from main method of first_module.py')

Vì vậy, trong mô-đun ở trên, chúng ta có một câu lệnh in nằm ngoài phương thức chính và một câu lệnh in nữa nằm bên trong. Mã trong phương thức chính, sẽ chỉ được thực thi nếu mô-đun được gọi dưới dạng tập lệnh từ (e. g. ) dòng lệnh, như hình bên dưới

python first_module.py
Hello from first_module.py
Hello from main method of first_module.py

Bây giờ, giả sử rằng thay vì gọi mô-đun

# Assume that this is another_module.py
import my_module
5 dưới dạng tập lệnh, chúng tôi muốn nhập mô-đun đó vào một mô-đun khác

# second_module.py
import first_module

print('Hello from second_module.py')

if __name__ == '__main__':
print('Hello from main method of second_module.py')

Và cuối cùng, chúng tôi gọi

# Assume that this is another_module.py
import my_module
6 như một kịch bản

python second_module.py
Hello from first_module.py
Hello from second_module.py
Hello from main method of second_module.py

Lưu ý rằng đầu ra đầu tiên đến từ mô-đun

# Assume that this is another_module.py
import my_module
5 và cụ thể là từ câu lệnh in nằm ngoài phương thức chính. Vì chúng tôi chưa gọi
# Assume that this is another_module.py
import my_module
5 dưới dạng tập lệnh mà thay vào đó chúng tôi đã nhập nó vào
# Assume that this is another_module.py
import my_module
6 nên phương thức chính trong first_module sẽ bị bỏ qua đơn giản vì if __name__ == ‘__main__' ước tính thành
# first_module.py
print('Hello from first_module.py')

if __name__ == '__main__':
print('Hello from main method of first_module.py')
1. Nhớ lại rằng từ lời gọi trên, biến __name__ cho
# Assume that this is another_module.py
import my_module
6 đã được gán chuỗi
# Assume that this is another_module.py
import my_module
1 trong khi biến __name__ của
# Assume that this is another_module.py
import my_module
5 đã được gán tên của mô-đun, i. e.
# first_module.py
print('Hello from first_module.py')

if __name__ == '__main__':
print('Hello from main method of first_module.py')
7

Mặc dù mọi thứ trong if __name__ == ‘__main__' được coi là cái mà chúng tôi gọi là "phương thức chính", nhưng tốt hơn hết là xác định một phương thức chính phù hợp thay vào đó, phương thức này được gọi nếu điều kiện đánh giá là Đúng. Ví dụ,

# my_module.py
def main():
"""The main function of my Python Application"""
print('Hello World')

if __name__ == '__main__':
main()

Ghi chú. Tôi thường không khuyến khích bạn có nhiều chức năng chính trong một ứng dụng Python. Tôi đã sử dụng hai phương pháp chính khác nhau chỉ vì ví dụ

Suy nghĩ cuối cùng

Trong bài viết này, tôi đã mô tả cách phương thức chính được thực thi trong Python và trong những điều kiện nào. Khi một mô-đun được gọi dưới dạng một chuỗi, thì trình thông dịch Python sẽ gán chuỗi

# Assume that this is another_module.py
import my_module
1 cho một biến đặc biệt có tên là __name__ và mã được xác định theo điều kiện if __name__ == ‘__main__' sau đó sẽ được thực thi. Mặt khác, khi một mô-đun được nhập trong một mô-đun khác, thì trình thông dịch Python sẽ gán chuỗi có tên của mô-đun đó cho biến đặc biệt __name__. Điều này có nghĩa là trong những trường hợp như vậy, if __name__ == ‘__main__' sẽ ước tính thành
# first_module.py
print('Hello from first_module.py')

if __name__ == '__main__':
print('Hello from main method of first_module.py')
1, điều đó có nghĩa là chỉ mã bên ngoài điều kiện này mới được thực thi sau khi nhập

Trở thành thành viên và đọc mọi câu chuyện trên Medium. Phí thành viên của bạn hỗ trợ trực tiếp cho tôi và các nhà văn khác mà bạn đọc. Bạn cũng sẽ có toàn quyền truy cập vào mọi câu chuyện trên Phương tiện

__ tên __ == '__ chính __' trong Python là gì?

Trong Python, tên đặc biệt __main__ được sử dụng cho hai cấu trúc quan trọng. tên môi trường cấp cao nhất của chương trình , có thể kiểm tra bằng biểu thức __name__ == '__main__'; . __chính__. py trong các gói Python.

Việc sử dụng __ chính __ trong Python là gì?

Điều gì sẽ xảy ra nếu __name__ == “__main__”. làm? . 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, nó sẽ đặt biến __name__ đặc biệt có giá trị “__main__”