Hướng dẫn if __name__ == __main__ python - nếu __name__ == __main__ python

Bạn có thể gặp phải thành ngữ Python từ ____22 khi đọc mã người khác. Không có gì ngạc nhiên khi nó lan rộng! Bạn thậm chí có thể đã sử dụng

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 trong các tập lệnh của riêng bạn. Nhưng bạn đã sử dụng nó một cách chính xác?

Có thể bạn đã lập trình bằng ngôn ngữ gia đình C như Java trước đây và bạn tự hỏi liệu cấu trúc này có phải là phụ kiện vụng về để sử dụng chức năng

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
4 làm điểm vào hay không.

Về mặt cú pháp, thành ngữ Python từ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 chỉ là một khối có điều kiện bình thường:

 1if __name__ == "__main__":
 2    ...

Khối được thụt vào bắt đầu trong dòng 2 chứa tất cả các mã mà Python sẽ thực thi khi câu lệnh có điều kiện trong dòng 1 đánh giá là

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
6. Trong ví dụ mã ở trên, logic mã cụ thể mà bạn đã đặt trong khối có điều kiện được biểu thị bằng dấu chấm lửng của trình giữ chỗ [
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
7].

Vì vậy, nếu không có gì đặc biệt về thành ngữ ____22, thì tại sao nó lại trông khó hiểu, và tại sao nó tiếp tục gây ra cuộc thảo luận trong cộng đồng Python?

Nếu thành ngữ vẫn có vẻ hơi khó hiểu và bạn không hoàn toàn chắc chắn nó làm gì, tại sao bạn có thể muốn nó và khi nào nên sử dụng nó, thì bạn đã đến đúng nơi! Trong hướng dẫn này, bạn sẽ tìm hiểu tất cả về thành ngữ của Python, ____22, bắt đầu với những gì nó thực sự làm trong Python và kết thúc với một gợi ý cho một cách nhanh hơn để đề cập đến nó.what it does, why you might want it, and when to use it, then you’ve come to the right place! In this tutorial, you’ll learn all about Python’s

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 idiom—starting with what it really does in Python, and ending with a suggestion for a quicker way to refer to it.

Tóm lại: nó cho phép bạn thực thi mã khi tệp chạy dưới dạng tập lệnh, nhưng không phải khi nó được nhập dưới dạng mô -đun

Đối với hầu hết các mục đích thực tế, bạn có thể nghĩ về khối có điều kiện mà bạn mở bằng

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 như một cách để lưu trữ mã chỉ nên chạy khi tệp của bạn được thực thi dưới dạng tập lệnh.

Bạn sẽ thấy điều đó có nghĩa là gì trong một khoảnh khắc. Hiện tại, giả sử bạn có tệp sau:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]

Trong ví dụ này, bạn xác định một hàm,

>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1, bắt chước một tiếng vang trong thế giới thực bằng cách in dần ngày càng ít hơn các chữ cái cuối cùng của văn bản đầu vào.

Dưới đây, trong các dòng 10 đến 12, bạn sử dụng thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2. Mã này bắt đầu với câu lệnh có điều kiện
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 trong dòng 10. Trong các dòng thụt, 11 và 12, sau đó bạn thu thập đầu vào của người dùng và gọi
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1 với đầu vào đó. Hai dòng này sẽ thực thi khi bạn chạy
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
5 dưới dạng tập lệnh từ dòng lệnh của bạn:

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.

Khi bạn chạy tệp dưới dạng tập lệnh bằng cách chuyển đối tượng tệp cho trình thông dịch Python của bạn, biểu thức

>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
6 trả về
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
6. Khối mã trong
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
8 sau đó chạy, do đó, Python thu thập đầu vào của người dùng và gọi
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1.

Hãy tự mình thử nó! Bạn có thể tải xuống tất cả các tệp mã mà bạn sẽ sử dụng trong hướng dẫn này từ liên kết bên dưới:

Đồng thời, nếu bạn nhập

>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1 trong một mô -đun khác hoặc phiên giao diện điều khiển, thì mã lồng nhau sẽ giành được chạy:

>>>

>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.

Trong trường hợp này, bạn muốn sử dụng

>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1 trong bối cảnh của một phiên bản tập lệnh hoặc phiên thông dịch khác, vì vậy bạn đã giành được sự cần thiết để thu thập đầu vào của người dùng. Chạy
# namemain.py

print[__name__, type[__name__]]
2 sẽ gây rối với mã của bạn bằng cách tạo ra một tác dụng phụ khi nhập
# namemain.py

print[__name__, type[__name__]]
3.

Khi bạn làm tổ mã cụ thể cho việc sử dụng tập lệnh của tập tin của bạn theo thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2, thì bạn tránh chạy mã mà không liên quan đến các mô -đun nhập khẩu.

Mã làm tổ theo

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 cho phép bạn phục vụ các trường hợp sử dụng khác nhau:

  • Tập lệnh: Khi chạy dưới dạng tập lệnh, mã của bạn sẽ nhắc người dùng để nhập, gọi
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1 và in kết quả.
    When run as a script, your code prompts the user for input, calls
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1, and prints the result.
  • Mô -đun: Khi bạn nhập
    # namemain.py
    
    print[__name__, type[__name__]]
    
    3 dưới dạng mô -đun, thì
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1 sẽ được xác định, nhưng không có mã thực thi. Bạn cung cấp
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1 cho phiên mã chính mà không có bất kỳ tác dụng phụ nào.
    When you import
    # namemain.py
    
    print[__name__, type[__name__]]
    
    3 as a module, then
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1 gets defined, but no code executes. You provide
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    1 to the main code session without any side effects.

Bằng cách triển khai thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 trong mã của bạn, bạn đã thiết lập một điểm nhập bổ sung cho phép bạn sử dụng
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
1 ngay từ dòng lệnh.

Có bạn đi! Bây giờ bạn đã đề cập đến thông tin quan trọng nhất về chủ đề này. Tuy nhiên, có nhiều hơn nữa để tìm hiểu, và có một số sự tinh tế có thể giúp bạn xây dựng sự hiểu biết sâu sắc hơn về mã này và Python nói chung.

Đọc để tìm hiểu thêm về thành ngữ tên chính, vì hướng dẫn này sẽ nói ngắn gọn về nó.

Làm thế nào để thành ngữ tên chính hoạt động?

Tại cốt lõi của nó, thành ngữ là một câu lệnh có điều kiện kiểm tra xem giá trị của biến

$ python namemain.py
__main__ 
2 có bằng với chuỗi
$ python namemain.py
__main__ 
3 hay không:

  • Nếu biểu thức
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    6 là
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    6, thì mã được thụt vào sau câu lệnh có điều kiện sẽ thực thi.
  • Nếu biểu thức
    >>> from echo import echo
    >>> print[echo["Please help me I'm stuck on a mountain"]]
    ain
    in
    n
    .
    
    6 là
    $ python namemain.py
    __main__ 
    
    7, thì Python bỏ qua mã thụt lề.

Nhưng khi nào

$ python namemain.py
__main__ 
2 bằng chuỗi
$ python namemain.py
__main__ 
3? Trong phần trước, bạn đã biết rằng đây là trường hợp khi bạn chạy tệp Python của mình dưới dạng tập lệnh từ dòng lệnh. Trong khi điều đó bao gồm hầu hết các trường hợp sử dụng thực tế, có lẽ bạn muốn đi sâu hơn.

Python đặt toàn cầu

$ python namemain.py
__main__ 
2 của một mô-đun bằng
$ python namemain.py
__main__ 
3 nếu trình thông dịch Python chạy mã của bạn trong môi trường mã cấp cao nhất:top-level code environment:

Mã cấp cao nhất là mô-đun Python do người dùng chỉ định đầu tiên bắt đầu chạy. Nó có giá trị cấp cao nhất vì nó nhập tất cả các mô-đun khác mà chương trình cần. [Nguồn]

Để hiểu rõ hơn điều đó có nghĩa là gì, bạn sẽ thiết lập một ví dụ nhỏ thực tế. Tạo tệp Python, gọi nó là

>>> import namemain
namemain 
2 và thêm một dòng mã:

# namemain.py

print[__name__, type[__name__]]

Tệp mới của bạn chỉ chứa một dòng mã duy nhất in giá trị và loại của toàn cầu

$ python namemain.py
__main__ 
2 trên bảng điều khiển.

Quay đầu thiết bị đầu cuối của bạn và chạy tệp Python dưới dạng tập lệnh:

$ python namemain.py
__main__ 

Đầu ra cho bạn thấy rằng giá trị của

$ python namemain.py
__main__ 
2 là chuỗi Python
$ python namemain.py
__main__ 
3 nếu bạn chạy tệp của mình dưới dạng tập lệnh.

Bây giờ bạn đã biết giá trị của

$ python namemain.py
__main__ 
2 khi mã của bạn được thực thi trong môi trường mã cấp cao nhất.

Nhưng một tuyên bố có điều kiện chỉ có thể tạo ra kết quả khác nhau khi điều kiện có cơ hội đánh giá theo những cách khác nhau. Vì vậy, khi nào mã của bạn không chạy trong môi trường mã cấp cao nhất và điều gì xảy ra với giá trị của

$ python namemain.py
__main__ 
2 trong trường hợp đó?

Mã trong tệp của bạn không được chạy trong môi trường mã cấp cao hơn nếu bạn nhập mô-đun của mình. Trong trường hợp đó, Python đặt

$ python namemain.py
__main__ 
2 thành tên mô -đun.

Để thử điều này, hãy khởi động bảng điều khiển Python và nhập mã từ

>>> import namemain
namemain 
2 dưới dạng mô -đun:

>>>

>>> import namemain
namemain 

Python thực thi mã được lưu trữ trong không gian tên toàn cầu của

>>> import namemain
namemain 
2 trong quá trình nhập, điều đó có nghĩa là nó sẽ gọi
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
1 và viết đầu ra vào bảng điều khiển.

Tuy nhiên, trong trường hợp này, giá trị của mô -đun

$ python namemain.py
__main__ 
2 là khác nhau. Nó chỉ vào
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3, một chuỗi mà bằng tên mô -đun.

Bạn chỉ biết rằng đối với môi trường mã cấp cao nhất của bạn,

$ python namemain.py
__main__ 
2 luôn là
$ python namemain.py
__main__ 
3, vì vậy hãy tiếp tục và xác nhận điều đó trong phiên phiên dịch của bạn. Ngoài ra, hãy kiểm tra chuỗi
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3 đến từ đâu:

>>>

>>> __name__
'__main__'

>>> namemain.__name__
'namemain'

Python thực thi mã được lưu trữ trong không gian tên toàn cầu của

>>> import namemain
namemain 
2 trong quá trình nhập, điều đó có nghĩa là nó sẽ gọi
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
1 và viết đầu ra vào bảng điều khiển.

Tuy nhiên, trong trường hợp này, giá trị của mô -đun

$ python namemain.py
__main__ 
2 là khác nhau. Nó chỉ vào
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3, một chuỗi mà bằng tên mô -đun.

  • Bạn chỉ biết rằng đối với môi trường mã cấp cao nhất của bạn,
    $ python namemain.py
    __main__ 
    
    2 luôn là
    $ python namemain.py
    __main__ 
    
    3, vì vậy hãy tiếp tục và xác nhận điều đó trong phiên phiên dịch của bạn. Ngoài ra, hãy kiểm tra chuỗi
    >>> __name__
    '__main__'
    
    >>> namemain.__name__
    'namemain'
    
    3 đến từ đâu:the top-level code environment, the value of
    $ python namemain.py
    __main__ 
    
    2 is
    $ python namemain.py
    __main__ 
    
    3
    .
  • Toàn cầu
    $ python namemain.py
    __main__ 
    
    2 có giá trị
    $ python namemain.py
    __main__ 
    
    3 và
    >>> __name__
    '__main__'
    
    >>> namemain.__name__
    'namemain'
    
    9 đối với mô -đun
    # namemain.py
    
    print[__name__, type[__name__]]
    
    if __name__ == "__main__":
        print["Nested code only runs in the top-level code environment"]
    
    0 đã nhập có giá trị
    >>> __name__
    '__main__'
    
    >>> namemain.__name__
    'namemain'
    
    3, là tên mô -đun dưới dạng chuỗi.imported module, the value of
    $ python namemain.py
    __main__ 
    
    2 is the module’s name as a string.

Bây giờ bạn biết rằng giá trị của

$ python namemain.py
__main__ 
2 sẽ có một trong hai giá trị tùy thuộc vào nơi nó sống:

# namemain.py

print[__name__, type[__name__]]

if __name__ == "__main__":
    print["Nested code only runs in the top-level code environment"]

Trong môi trường mã cấp cao nhất, giá trị của

$ python namemain.py
__main__ 
2 là
$ python namemain.py
__main__ 
3.

Trong một mô -đun đã nhập, giá trị của

$ python namemain.py
__main__ 
2 là tên mô -đun dưới dạng chuỗi.

$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment

Bởi vì Python tuân theo các quy tắc này, bạn có thể tìm hiểu xem một mô-đun có chạy trong môi trường mã cấp cao nhất hay không. Bạn làm điều này bằng cách kiểm tra giá trị của

$ python namemain.py
__main__ 
2 bằng một câu lệnh có điều kiện, đưa bạn đến vòng tròn đầy đủ cho tên thành ngữ tên chính:

Với việc kiểm tra có điều kiện này, bạn có thể khai báo mã chỉ thực thi khi mô-đun được chạy trong môi trường mã cấp cao nhất.

>>>

>>> import namemain
namemain 

Python thực thi mã được lưu trữ trong không gian tên toàn cầu của

>>> import namemain
namemain 
2 trong quá trình nhập, điều đó có nghĩa là nó sẽ gọi
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
1 và viết đầu ra vào bảng điều khiển.

Tuy nhiên, trong trường hợp này, giá trị của mô -đun

$ python namemain.py
__main__ 
2 là khác nhau. Nó chỉ vào
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3, một chuỗi mà bằng tên mô -đun.

Bạn chỉ biết rằng đối với môi trường mã cấp cao nhất của bạn,
$ python namemain.py
__main__ 
2 luôn là
$ python namemain.py
__main__ 
3, vì vậy hãy tiếp tục và xác nhận điều đó trong phiên phiên dịch của bạn. Ngoài ra, hãy kiểm tra chuỗi
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3 đến từ đâu:

Toàn cầu

$ python namemain.py
__main__ 
2 có giá trị
$ python namemain.py
__main__ 
3 và
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
9 đối với mô -đun
# namemain.py

print[__name__, type[__name__]]

if __name__ == "__main__":
    print["Nested code only runs in the top-level code environment"]
0 đã nhập có giá trị
>>> __name__
'__main__'

>>> namemain.__name__
'namemain'
3, là tên mô -đun dưới dạng chuỗi.

Bây giờ bạn biết rằng giá trị của

$ python namemain.py
__main__ 
2 sẽ có một trong hai giá trị tùy thuộc vào nơi nó sống:

Trong môi trường mã cấp cao nhất, giá trị của

$ python namemain.py
__main__ 
2 là
$ python namemain.py
__main__ 
3.

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
1

Trong một mô -đun đã nhập, giá trị của

$ python namemain.py
__main__ 
2 là tên mô -đun dưới dạng chuỗi.

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
2

Bởi vì Python tuân theo các quy tắc này, bạn có thể tìm hiểu xem một mô-đun có chạy trong môi trường mã cấp cao nhất hay không. Bạn làm điều này bằng cách kiểm tra giá trị của

$ python namemain.py
__main__ 
2 bằng một câu lệnh có điều kiện, đưa bạn đến vòng tròn đầy đủ cho tên thành ngữ tên chính:

Với việc kiểm tra có điều kiện này, bạn có thể khai báo mã chỉ thực thi khi mô-đun được chạy trong môi trường mã cấp cao nhất.

Thêm thành ngữ vào

>>> import namemain
namemain 
2 như được hiển thị trong khối mã ở trên, sau đó chạy tệp dưới dạng tập lệnh một lần nữa:

Khi bạn tạo môi trường ảo bằng mô -đun

$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
9, như được hiển thị ở trên, thì bạn chạy mã được xác định trong tệp
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
7. Tùy chọn
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
8 theo sau là tên mô -đun
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
9 gọi
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
7 từ mô -đun
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
9.

$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
9 là một gói chứ không phải là tập lệnh giao diện dòng lệnh nhỏ [CLI], nên nó có tệp
$ python namemain.py
__main__ 
Nested code only runs in the top-level code environment
7 chuyên dụng làm điểm nhập của nó.

Trong tự nhiên, bạn có thể gặp nhiều lý do hơn cho việc sử dụng thành ngữ tên chính trong mã Python. Tuy nhiên, thu thập đầu vào của người dùng, thông qua đầu vào tiêu chuẩn hoặc dòng lệnh, là lý do chính được đề xuất để sử dụng nó.

Khi nào bạn nên tránh thành ngữ tên chính?

Bây giờ, bạn đã học được khi sử dụng thành ngữ tên chính, đó là thời gian để tìm hiểu khi nào nó không phải là ý tưởng tốt nhất để sử dụng nó. Bạn có thể ngạc nhiên khi biết rằng trong nhiều trường hợp, có những lựa chọn tốt hơn so với việc lồng mã của bạn theo

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 trong Python.

Đôi khi, các nhà phát triển sử dụng thành ngữ tên chính để thêm các lần chạy kiểm tra vào tập lệnh kết hợp chức năng mã và kiểm tra trong cùng một tệp:test runs to a script that combines code functionality and tests in the same file:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
3

Với thiết lập này, bạn có thể chạy các thử nghiệm so với mã của mình khi bạn thực thi nó dưới dạng tập lệnh:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
4

Bởi vì bạn đã chạy tệp dưới dạng tập lệnh,

$ python namemain.py
__main__ 
2 bằng
$ python namemain.py
__main__ 
3, biểu thức có điều kiện được trả về
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
6 và Python gọi là
 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
11. Bộ thử nghiệm nhỏ chạy, và bài kiểm tra của bạn đã thành công.

Đồng thời, bạn đã không tạo bất kỳ thực thi mã bất ngờ nào khi nhập mã của bạn dưới dạng mô -đun:

>>>

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
5

Nó vẫn có thể nhập mô -đun và sử dụng chức năng mà bạn đã xác định ở đó. Bài kiểm tra đơn vị giành chiến thắng chạy trừ khi bạn thực hiện mô-đun trong môi trường mã cấp cao nhất.

Mặc dù điều này hoạt động cho các tệp nhỏ, nhưng nó thường không được coi là thực hành tốt. Nó không nên trộn các bài kiểm tra và mã trong cùng một tệp. Thay vào đó, hãy viết các bài kiểm tra của bạn trong một tệp riêng biệt. Theo lời khuyên này thường làm cho một cơ sở mã có tổ chức hơn. Cách tiếp cận này cũng loại bỏ bất kỳ chi phí nào, chẳng hạn như nhu cầu nhập

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
12 trong tệp tập lệnh chính của bạn.

Một lý do khác mà một số lập trình viên sử dụng thành ngữ tên chính là bao gồm một minh chứng cho những gì mã của họ có thể làm:demonstration of what their code can do:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
6

Một lần nữa, người dùng của bạn vẫn có thể nhập mô -đun mà không có bất kỳ tác dụng phụ nào. Ngoài ra, khi họ chạy

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
13 dưới dạng tập lệnh, họ sẽ xem qua chức năng của nó:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
7

Bạn có thể tìm thấy các thực thi mã demo như vậy trong tên thành ngữ tên chính, nhưng có những cách tốt hơn được cho là để chứng minh cách sử dụng chương trình của bạn. Bạn có thể viết các tài liệu chi tiết với các lần chạy ví dụ có thể tăng gấp đôi dưới dạng tài liệu và bạn có thể soạn thảo tài liệu phù hợp cho dự án của mình.

Hai ví dụ trước đây bao gồm hai trường hợp sử dụng dưới mức tối ưu phổ biến của thành ngữ tên chính. Ngoài ra còn có các kịch bản khác khi nó tốt nhất để tránh thành ngữ chính trong Python:

  • Một tập lệnh thuần túy: Nếu bạn viết một tập lệnh mà Lừa có nghĩa là được chạy dưới dạng tập lệnh, thì bạn có thể đặt quá trình thực thi mã của mình vào không gian tên toàn cầu mà không cần làm tổ trong tên thành ngữ tên chính. Bạn có thể sử dụng Python làm ngôn ngữ kịch bản vì nó không thực thi các mẫu hướng đối tượng mạnh mẽ. Bạn không cần phải gắn bó với các mẫu thiết kế từ các ngôn ngữ khác khi bạn lập trình bằng Python. If you write a script that’s meant to be run as a script, then you can put your code execution into the global namespace without nesting it in the name-main idiom. You can use Python as a scripting language because it doesn’t enforce strong object-oriented patterns. You don’t have to stick to design patterns from other languages when you program in Python.

  • Một chương trình dòng lệnh phức tạp: Nếu bạn viết một ứng dụng dòng lệnh lớn hơn, thì tốt nhất là tạo một tệp riêng làm điểm nhập của bạn. Sau đó, bạn nhập mã từ mô-đun của mình ở đó thay vì xử lý đầu vào của người dùng với thành ngữ tên chính. Đối với các chương trình dòng lệnh phức tạp hơn, bạn cũng sẽ được hưởng lợi từ việc sử dụng mô-đun

     1# echo.py
     2
     3def echo[text: str, repetitions: int = 3] -> str:
     4    """Imitate a real-world echo."""
     5    echoed_text = ""
     6    for i in range[repetitions, 0, -1]:
     7        echoed_text += f"{text[-i:]}\n"
     8    return f"{echoed_text.lower[]}."
     9
    10if __name__ == "__main__":
    11    text = input["Yell something at a mountain: "]
    12    print[echo[text]]
    
    14 tích hợp thay vì
    $ python namemain.py
    __main__ 
    Nested code only runs in the top-level code environment
    
    3.
    If you write a larger command-line application, then it’s best to create a separate file as your entry point. You then import the code from your module there instead of handling user input with the name-main idiom. For more complex command-line programs, you’ll also benefit from using the built-in
     1# echo.py
     2
     3def echo[text: str, repetitions: int = 3] -> str:
     4    """Imitate a real-world echo."""
     5    echoed_text = ""
     6    for i in range[repetitions, 0, -1]:
     7        echoed_text += f"{text[-i:]}\n"
     8    return f"{echoed_text.lower[]}."
     9
    10if __name__ == "__main__":
    11    text = input["Yell something at a mountain: "]
    12    print[echo[text]]
    
    14 module instead of
    $ python namemain.py
    __main__ 
    Nested code only runs in the top-level code environment
    
    3.

Có lẽ bạn đã sử dụng thành ngữ chính tên cho một trong những mục đích dưới mức tối ưu này trước đây. Nếu bạn muốn tìm hiểu thêm về cách viết thêm Python thành ngữ cho từng kịch bản này, thì hãy làm theo các liên kết được cung cấp:

Mặc dù bây giờ bạn biết khi nào nên tránh thành ngữ chính tên, bạn vẫn có thể tự hỏi về cách sử dụng tốt nhất trong một kịch bản hợp lệ.

Theo cách nào bạn nên bao gồm thành ngữ tên chính?

Thành ngữ tên chính trong Python chỉ là một tuyên bố có điều kiện, vì vậy bạn có thể sử dụng nó ở bất cứ đâu trong tập tin của bạn ngay cả hơn một lần! Tuy nhiên, đối với hầu hết các trường hợp sử dụng, bạn sẽ đặt một thành ngữ chính tên ở cuối tập lệnh của bạn:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
8

Bạn đặt tên thành ngữ tên chính ở cuối tập lệnh của bạn vì điểm nhập cho tập lệnh Python luôn là đỉnh của tệp. Nếu bạn đặt thành ngữ tên chính ở cuối tệp của bạn, thì tất cả các chức năng và lớp của bạn sẽ được xác định trước khi Python đánh giá biểu thức có điều kiện.

Tuy nhiên, mặc dù nó không phổ biến khi sử dụng nhiều hơn một tên thành ngữ chính trong một kịch bản, nhưng có thể có một lý do để làm như vậy trong một số trường hợp. Tài liệu hướng dẫn kiểu Python, PEP 8, rõ ràng nơi đặt tất cả các báo cáo nhập của bạn:

Nhập khẩu luôn được đặt ở đầu tệp, ngay sau khi bất kỳ bình luận và tài liệu mô -đun nào, và trước khi mô -đun toàn cầu và hằng số. [Nguồn]

Đây là lý do tại sao bạn đã nhập

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 ở đầu tệp trong
>>> from echo import echo
>>> print[echo["Please help me I'm stuck on a mountain"]]
ain
in
n
.
5:

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
9

Tuy nhiên, bạn không cần phải nhập

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 khi bạn chỉ muốn nhập
# namemain.py

print[__name__, type[__name__]]
3 dưới dạng mô -đun.

Để giải quyết vấn đề này và vẫn gắn bó với các đề xuất phong cách được xác định trong PEP 8, bạn có thể sử dụng thành ngữ tên chính tên thứ hai. Bằng cách làm tổ việc nhập

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 trong một thành ngữ chính tên, bạn có thể giữ tất cả các lần nhập ở đầu tệp nhưng tránh nhập
 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 khi bạn giành được cần phải sử dụng nó:

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
0

Bạn đã lồng vào việc nhập

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 dưới một thành ngữ chính tên khác. Bằng cách đó, bạn giữ câu lệnh nhập ở đầu tệp của mình, nhưng bạn tránh nhập
 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
16 khi bạn sử dụng
# namemain.py

print[__name__, type[__name__]]
3 làm mô -đun.

Như bạn đã học trước đó trong hướng dẫn, có ít trường hợp sử dụng thành ngữ tên chính hơn bạn mong đợi. Đối với hầu hết các trường hợp sử dụng đó, việc đặt một trong những kiểm tra có điều kiện này ở cuối tập lệnh của bạn sẽ là lựa chọn tốt nhất của bạn.

Cuối cùng, bạn có thể tự hỏi mã nào sẽ đi vào khối mã có điều kiện. Tài liệu Python cung cấp hướng dẫn rõ ràng về việc sử dụng thành ngữ của thành ngữ tên chính trong vấn đề đó:

Đặt càng ít câu lệnh càng tốt trong khối bên dưới

 1# echo.py
 2
 3def echo[text: str, repetitions: int = 3] -> str:
 4    """Imitate a real-world echo."""
 5    echoed_text = ""
 6    for i in range[repetitions, 0, -1]:
 7        echoed_text += f"{text[-i:]}\n"
 8    return f"{echoed_text.lower[]}."
 9
10if __name__ == "__main__":
11    text = input["Yell something at a mountain: "]
12    print[echo[text]]
25 có thể cải thiện độ rõ và tính đúng của mã. [Nguồn]

Giữ mã dưới tên của bạn ở vị trí chính của bạn ở mức tối thiểu! Khi bạn bắt đầu đặt nhiều dòng mã lồng nhau theo thành ngữ tên chính, thì thay vào đó, bạn nên xác định hàm

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
4 và gọi hàm đó:

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
1

Mẫu thiết kế này cung cấp cho bạn lợi thế rằng mã dưới tên thành ngữ tên chính là rõ ràng và súc tích. Ngoài ra, nó có thể gọi

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
4 ngay cả khi bạn đã nhập mã của mình dưới dạng mô -đun, ví dụ như để kiểm tra đơn vị các chức năng của nó.

Trong phần này, bạn đã học được rằng có lẽ bạn nên viết tên thành ngữ tên chính ở cuối kịch bản của bạn.

Nếu bạn có nhiều dòng mã mà bạn có kế hoạch làm tổ theo

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2, thì tốt hơn hết là bạn nên tái cấu trúc mã đó thành hàm
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
4 mà bạn gọi từ khối có điều kiện theo tên thành ngữ tên chính.

Bây giờ bạn đã biết làm thế nào bạn có thể sử dụng thành ngữ tên chính, bạn có thể tự hỏi tại sao nó trông khó hiểu hơn mã Python khác mà bạn đã từng sử dụng.

Là mã Boilerplate thành ngữ nên được đơn giản hóa?

Nếu bạn đến từ một ngôn ngữ lập trình hướng đối tượng khác, bạn có thể nghĩ rằng thành ngữ chính tên của Python là một điểm nhập cảnh giống với các chức năng ____24 trong Java hoặc C, nhưng Clumsier:

Meme dựa trên một truyện tranh web [Hình ảnh: Mike Organisciak]

Mặc dù chắc chắn hài hước và dễ hiểu, meme này là sai lệch vì nó ngụ ý rằng thành ngữ tên chính có thể so sánh với các hàm điểm nhập

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
4 trong các ngôn ngữ khác.

Tên của Python tên chính là đặc biệt. Nó chỉ là một kiểm tra có điều kiện. Lúc đầu, nó có thể trông khó hiểu, đặc biệt là khi bạn bắt đầu làm việc với Python và bạn đã từng sử dụng để cú pháp Slim và thanh lịch của Python. Rốt cuộc, thành ngữ tên chính bao gồm một biến số ít từ không gian tên toàn cầu và một chuỗi cũng có giá trị khó chịu.

Vì vậy, nó không phải là loại điểm vào mà chính đại diện trong các ngôn ngữ khác. Nhưng tại sao nó trông giống như nó? Bạn có thể đã sao chép và dán thành ngữ nhiều lần, hoặc thậm chí gõ nó ra, và tự hỏi tại sao Python không có cú pháp ngắn gọn hơn cho nó.

Nếu bạn duyệt các tài liệu lưu trữ của danh sách gửi thư Python-Ideas, PEPS đã từ chối và Diễn đàn thảo luận Python, thì bạn sẽ tìm thấy một số nỗ lực để thay đổi thành ngữ.

Nếu bạn đọc một số cuộc thảo luận này, thì bạn sẽ nhận thấy rằng nhiều Pythonistas dày dạn lập luận rằng thành ngữ đó là mật mã và không nên thay đổi. Họ đưa ra nhiều lý do:

  • Nó ngắn: Hầu hết các thay đổi được đề xuất chỉ tiết kiệm hai dòng mã. Most suggested changes save only two lines of code.
  • Nó có một trường hợp sử dụng hạn chế: Bạn chỉ nên sử dụng nó nếu bạn cần chạy một tệp cả dưới dạng mô -đun cũng như tập lệnh. Bạn không cần phải sử dụng nó rất thường xuyên. You should only use it if you need to run a file both as a module as well as a script. You shouldn’t need to use it very often.
  • Nó phơi bày sự phức tạp: Các biến và chức năng của Dunder là một phần lớn của Python một khi bạn nhìn sâu hơn một chút. Điều đó có thể làm cho thành ngữ hiện tại trở thành một điểm nhập cảnh cho những người học gây ra sự tò mò và mang đến cho họ cái nhìn đầu tiên dưới mui xe của cú pháp Python. Dunder variables and function are a big part of Python once you peek a bit deeper. That can make the current idiom an entry point for learners that sparks curiosity and gives them a first look under the hood of Python’s syntax.
  • Nó duy trì khả năng tương thích ngược: Tên thành ngữ tên chính là một tiêu chuẩn thực tế trong ngôn ngữ trong một thời gian dài, điều đó có nghĩa là việc thay đổi nó sẽ phá vỡ khả năng tương thích ngược. The name-main idiom has been a de facto standard in the language for a long time, which means that changing it would break backward compatibility.

Được rồi, vì vậy bạn đã bị mắc kẹt với

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 trong thời gian này. Có vẻ như nó rất hữu ích khi tìm ra một cách tốt để đề cập đến nó một cách nhất quán và chính xác!

Mở rộng phần dưới đây cho một chút bối cảnh và một vài gợi ý về cách bạn có thể nói về thành ngữ tên chính mà không vặn lưỡi hoặc thắt nút ngón tay của bạn:

Bạn có thể thảo luận về việc sử dụng thành ngữ tên chính tại một số điểm trong sự nghiệp Python của bạn. Nó có một biểu hiện dài để viết và thậm chí còn cồng kềnh hơn để nói to, vì vậy bạn cũng có thể tìm thấy một cách tốt để nói về nó.

Có nhiều cách khác nhau để đề cập đến nó trong cộng đồng Python. Hầu hết các đề cập trực tuyến bao gồm toàn bộ biểu thức

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 theo sau là một từ:

  • Hội nghị
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    2 [Nguồn]
  • Biểu thức
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    2 [Nguồn]
  • Idiom
     1# echo.py
     2
     3def echo[text: str, repetitions: int = 3] -> str:
     4    """Imitate a real-world echo."""
     5    echoed_text = ""
     6    for i in range[repetitions, 0, -1]:
     7        echoed_text += f"{text[-i:]}\n"
     8    return f"{echoed_text.lower[]}."
     9
    10if __name__ == "__main__":
    11    text = input["Yell something at a mountain: "]
    12    print[echo[text]]
    
    36 [Nguồn]
  • Thành ngữ
     1# echo.py
     2
     3def echo[text: str, repetitions: int = 3] -> str:
     4    """Imitate a real-world echo."""
     5    echoed_text = ""
     6    for i in range[repetitions, 0, -1]:
     7        echoed_text += f"{text[-i:]}\n"
     8    return f"{echoed_text.lower[]}."
     9
    10if __name__ == "__main__":
    11    text = input["Yell something at a mountain: "]
    12    print[echo[text]]
    
    37 [Nguồn]
  • Thành ngữ
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    2 [Nguồn]
  • Khổ thơ thực thi [nguồn]

Như bạn có thể nhận thấy, không có quy ước nghiêm ngặt nào xung quanh cách nói về

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2, nhưng có lẽ bạn đã giành được sai nếu bạn tuân theo sự đồng thuận chung khi gọi nó là thành ngữ ____22.the
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 idiom
.

Nếu bạn muốn quảng bá tiêu chuẩn hóa một tên ngắn hơn cho thành ngữ, thì hãy nói với bạn bè của bạn gọi nó là thành ngữ tên chính. Đó là những gì chúng tôi sẽ gọi nó tại Real Python! Nếu bạn thấy thuật ngữ hữu ích, thì có lẽ nó sẽ bắt kịp.the name-main idiom. That’s what we’ll be calling it at Real Python! If you find the term useful, then maybe it’ll catch on.

Nếu bạn tò mò, hãy lao vào một số cuộc thảo luận được liên kết trong các kênh cộng đồng Python khác nhau để tìm hiểu thêm về lý do tại sao các nhà phát triển tranh luận về việc giữ tên thành ngữ tên chính như vậy.

Sự kết luận

Bạn đã học được những gì thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
2 làm trong Python. Nó cho phép bạn viết mã thực thi khi bạn chạy tệp dưới dạng tập lệnh, nhưng không phải khi bạn nhập nó dưới dạng mô -đun. Nó tốt nhất để sử dụng nó khi bạn muốn thu thập đầu vào của người dùng trong quá trình chạy tập lệnh và tránh các tác dụng phụ khi nhập mô -đun của bạn, ví dụ, để kiểm tra các chức năng của nó.

Bạn cũng đã biết một số trường hợp sử dụng phổ biến nhưng dưới mức tối ưu và tìm hiểu về các phương pháp tốt hơn và thành ngữ hơn mà bạn có thể thực hiện trong các kịch bản đó. Có lẽ bạn đã chấp nhận thành ngữ chính tên của Python, sau khi tìm hiểu thêm về nó, nhưng nếu bạn vẫn không thích nó, thì thật tốt khi biết rằng bạn có thể thay thế việc sử dụng nó trong hầu hết các trường hợp.

Khi nào bạn sử dụng thành ngữ tên chính trong mã Python của bạn? Trong khi đọc hướng dẫn này, bạn đã khám phá ra một cách để thay thế nó, hoặc có một trường hợp sử dụng tốt mà chúng tôi đã bỏ lỡ? Chia sẻ suy nghĩ của bạn trong các ý kiến ​​dưới đây.

Ý nghĩa của nếu __ tên __ == '__ main__ là gì?

Nếu __name__ == Main Main: được sử dụng để thực thi một số mã chỉ khi tệp được chạy trực tiếp và không được nhập.used to execute some code only if the file was run directly, and not imported.

__ Main __ trong Python là gì?

__main__ là tên của môi trường nơi chạy mã cấp cao nhất. Mã cấp cao nhất là mô-đun Python do người dùng chỉ định đầu tiên bắt đầu chạy. Đó là cấp độ hàng đầu vì nó nhập tất cả các mô-đun khác mà chương trình cần.the name of the environment where top-level code is run. “Top-level code” is the first user-specified Python module that starts running. It's “top-level” because it imports all other modules that the program needs.

Tôi có nên sử dụng nếu name == Main?

Chúng ta có thể sử dụng khối if __name__ == "__main__" để cho phép hoặc ngăn các phần mã được chạy khi các mô -đun được nhập.Khi trình thông dịch python đọc một tệp, biến __name__ được đặt là __main__ nếu mô -đun được chạy hoặc dưới dạng tên của mô -đun nếu được nhập.to allow or prevent parts of code from being run when the modules are imported. When the Python interpreter reads a file, the __name__ variable is set as __main__ if the module being run, or as the module's name if it is imported.

Ý nghĩa của việc sử dụng cụm từ này >> nếu __ tên __ == __ chính __ Khi nào nó áp dụng làm thế nào nó có thể được giới hạn trong một gói?

Do đó, nếu __name__ == '__main__' có nghĩa là "chỉ thực thi mã sau nếu tệp này được chạy dưới dạng tập lệnh từ dòng lệnh".Nếu tệp được nhập từ một tệp khác, mã sẽ không được thực thi.execute following code only if this file is run as a script from the command line". If the file is imported from another file, the code will not be executed.

Bài Viết Liên Quan

Chủ Đề