Func __ name __ trong python là gì?

Biến đặc biệt __name__ của Python lưu tên của tập lệnh hoặc mô-đun Python hiện đang chạy. Biến Python __name__ đã được thêm vào Python 3. 0 và không có trong Python 2. x. Khi một tập lệnh hoặc mô-đun Python đang được thực thi, biến __name__ được cung cấp giá trị __main__ cho tập lệnh hoặc mô-đun Python hiện tại

_name_ có nghĩa là gì?

Python có một biến tích hợp được gọi là __name__ ghi lại tên của mô-đun hoặc tập lệnh hiện đang chạy. Biến __name__ chỉ giữ tên của mô-đun hoặc tập lệnh trừ khi mô-đun hiện tại đang thực thi, trong trường hợp đó, giá trị __main__ được đặt cho nó

Do đó, nếu một tập lệnh Python được nhập vào một tập lệnh Python khác, thì biến __name__ của nó phải luôn có giá trị __main__ khi tập lệnh Python đó đang chạy. Nếu không, nó sẽ có tên của mô-đun

Thí dụ

Để hiểu rõ hơn về điều này, hãy sử dụng một ví dụ. Tạo một tập lệnh trong Python có tên là thử nghiệm. py và nối thêm đoạn mã sau vào nó

đầu ra

Value of the __name__ :  __main__

Giải trình

Giá trị của biến __name__ được đặt thành __main__ khi chúng tôi chạy thử nghiệm. tập lệnh py

Bây giờ chúng ta hãy xây dựng một tập lệnh Python khác có tên là mains. py và nhập cái trước đó vào nó

Thí dụ

đầu ra

Value of the __name__ : testing

Giải trình

Bởi vì chúng ta đã hiển thị giá trị của biến __name__ của mô-đun py đang thử nghiệm, chúng ta có thể thấy từ đầu ra của đoạn mã trên rằng giá trị của biến đang được thử nghiệm

Sử dụng điều kiện if name == main

Chúng tôi sử dụng câu lệnh if và điều kiện __name__ == __main__ để khai báo rằng mã Python nhất định chỉ được thực hiện khi tập lệnh được chạy trực tiếp

Thí dụ

Ở đây, chuỗi __main__ được sử dụng để xác định xem mô-đun hoặc tập lệnh hiện tại có đang thực thi độc lập hay không. Hai dấu gạch dưới ở mỗi bên của tên trong biến __name__ để cho trình thông dịch Python biết rằng đó là từ khóa dành riêng hoặc từ khóa đặc biệt

Ví dụ mã cho tên trong Python

Như đã nói trước đây, khi chúng tôi chạy một tệp mã, giá trị của biến __name__ sẽ thay đổi thành __main__ vì mã được thực thi trực tiếp mà không cần nhập vào tệp khác

Mã số. Đây là ScriptP1. py, một tệp mã

đầu ra

It is a function in the ScriptP1.
Called from the ScriptP1.

Bây giờ, hãy tạo một tệp tập lệnh Python mới có tên ScriptP2. py, nhập ScriptP1. py vào đó và cố gắng gọi hàm anything() được định nghĩa trong ScriptP1

Mã số. Kịch BảnP2. mã py được cung cấp tại đây

đầu ra

ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.

Biến __name__ có giá trị ScriptP1 (tên của mô-đun) khi câu lệnh nhập cho ScriptP1 được chạy bên trong ScriptP2, nhưng vì ScriptP2 là tập lệnh đầu tiên được thực thi nên bây giờ nó sẽ có giá trị __main__

In giá trị của __name__

Hãy in ra giá trị của biến __name__ ở mỗi giai đoạn thực thi để các bạn dễ hiểu hơn

Thí dụ. Kịch BảnP1. mã nguồn của tập lệnh py Python được cung cấp bên dưới

đầu ra

Value or the variable __name__ : __main__

ví dụ 2. Và đây là kịch bản ScriptP2. mã nguồn của py

đầu ra

Value or the variable __name__ : __main__

Bản tóm tắt

Phương thức hoặc chức năng chính thường được sử dụng làm điểm mà tại đó bất kỳ chương trình nào được thực thi trong hầu hết các ngôn ngữ lập trình. Tuy nhiên, còn Python thì sao? . Tuy nhiên, một biến __name__ được tạo trước khi thực thi chương trình Python. Trong Python, biến này có thể được sử dụng thay cho phương thức chính

Bạn có thể đã gặp thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 của Python khi đọc mã của người khác. Không có gì ngạc nhiên khi nó phổ biến rộng rãi. Bạn thậm chí có thể đã sử dụng
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 trong tập lệnh của riêng mình. Nhưng liệu bạn đã sử dụng đúng cách?

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

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

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

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

Value of the __name__ : testing
0

Khối thụt lề bắt đầu từ dòng 2 chứa tất cả mã mà Python sẽ thực thi khi câu lệnh điều kiện ở dòng 1 ước tính thành

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

Vì vậy—nếu không có gì đặc biệt về thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3, thì tại sao nó lại có vẻ 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 về tác dụng của nó, 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ữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 của Python—bắt đầu với những gì nó thực sự làm trong Python và kết thúc bằng một gợi ý về cách tham khảo nó nhanh hơn

Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để hiểu thành ngữ tên-chính

Nói ngắn gọn. 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ể coi khối điều kiện mà bạn mở bằng

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 như một cách để lưu trữ mã chỉ 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 giây lát. Hiện tại, giả sử bạn có tệp sau

Value of the __name__ : testing
6

Trong ví dụ này, bạn định nghĩa một hàm,

Value of the __name__ : testing
72, mô phỏng tiếng vang trong thế giới thực bằng cách in dần dần các chữ cái cuối cùng của văn bản đầu vào

Dưới đó, từ 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
.
3. Mã này bắt đầu bằng câu lệnh điều kiện
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 ở dòng 10. Trong các dòng thụt vào, 11 và 12, sau đó bạn thu thập đầu vào của người dùng và gọi
Value of the __name__ : testing
72 với đầu vào đó. Hai dòng này sẽ thực thi khi bạn chạy
Value of the __name__ : testing
76 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 tới trình thông dịch Python của mình, biểu thức

Value of the __name__ : testing
77 trả về
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
7. Sau đó, khối mã bên dưới
Value of the __name__ : testing
79 sẽ chạy, vì vậy Python thu thập đầu vào của người dùng và gọi
Value of the __name__ : testing
72

Hãy tự mình thử. 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

Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để hiểu thành ngữ tên-chính

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

Value of the __name__ : testing
72 vào một mô-đun khác hoặc phiên bảng điều khiển, thì mã lồng nhau sẽ không chạy

>>>

Value of the __name__ : testing
7

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

Value of the __name__ : testing
72 trong ngữ cảnh của một tập lệnh hoặc phiên phiên dịch khác, vì vậy bạn sẽ không cần thu thập thông tin đầu vào của người dùng. Chạy
ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
03 sẽ gây rối với mã của bạn bằng cách tạo ra tác dụng phụ khi nhập
ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
04

Khi bạn lồng mã dành riêng cho việc sử dụng tập lệnh của tệp của bạn dưới thành ngữ

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

Mã lồng trong

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

  • Script. 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 liệu, gọi
    Value of the __name__ : testing
    
    72 và in kết quả
  • mô-đun. Khi bạn nhập
    ScriptP1 is imported into another file.
    It is a function in the ScriptP1.
    Called from the ScriptP2.
    
    04 làm mô-đun, thì
    Value of the __name__ : testing
    
    72 được xác định, nhưng không có mã nào thực thi. Bạn cung cấp
    Value of the __name__ : testing
    
    72 cho phiên mã chính mà không có bất kỳ tác dụng phụ nào

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

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 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
Value of the __name__ : testing
72 ngay từ dòng lệnh

của bạn đi. Bây giờ bạn đã bao gồm các thông tin quan trọng nhất về chủ đề này. Tuy nhiên, vẫn còn nhiều điều cần tìm hiểu và có một số điểm tinh tế có thể giúp bạn hiểu sâu hơn về mã này nói riêng và Python nói chung

Đọc tiếp để tìm hiểu thêm về thành ngữ tên-chính, vì hướng dẫn này sẽ đề cập đến nó một cách ngắn gọn

Loại bỏ các quảng cáo

Thành ngữ tên-chính hoạt động như thế nào?

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

Value or the variable __name__ : __main__
03 có bằng chuỗi
Value or the variable __name__ : __main__
04 hay không

  • Nếu biểu thức
    Value of the __name__ : testing
    
    77 là
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    7, thì mã thụt vào sau câu lệnh điều kiện sẽ thực thi
  • Nếu biểu thức
    Value of the __name__ : testing
    
    77 là
    Value or the variable __name__ : __main__
    
    08, thì Python sẽ bỏ qua mã thụt lề

Nhưng khi nào thì

Value or the variable __name__ : __main__
03 bằng chuỗi
Value or the variable __name__ : __main__
04? . Mặc dù điều đó bao gồm hầu hết các trường hợp sử dụng thực tế, nhưng có thể bạn muốn tìm hiểu sâu hơn

Python đặt

Value or the variable __name__ : __main__
03 toàn cầu của một mô-đun bằng
Value or the variable __name__ : __main__
04 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

“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 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ụ thực tế nhỏ. Tạo một tệp Python, gọi nó là

Value or the variable __name__ : __main__
03 và thêm một dòng mã

ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
0

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

Value or the variable __name__ : __main__
03 toàn cầu vào bảng điều khiển

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

Value or the variable __name__ : __main__
0

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

Value or the variable __name__ : __main__
03 là chuỗi Python
Value or the variable __name__ : __main__
04 nếu bạn chạy tệp của mình dưới dạng tập lệnh

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

Value or the variable __name__ : __main__
03 luôn là
Value or the variable __name__ : __main__
04. Môi trường mã cấp cao nhất thường là một mô-đun mà bạn chuyển tới trình thông dịch Python dưới dạng đối số tệp, như bạn đã thấy ở trên. Tuy nhiên, có các tùy chọn khác có thể cấu thành môi trường mã cấp cao nhất

  • Phạm vi của lời nhắc tương tác
  • Gói hoặc mô-đun Python được chuyển tới trình thông dịch Python với tùy chọn
    Value or the variable __name__ : __main__
    
    09, viết tắt của mô-đun
  • Mã Python được trình thông dịch Python đọc từ đầu vào tiêu chuẩn
  • Mã Python được chuyển tới trình thông dịch Python với tùy chọn
    Value or the variable __name__ : __main__
    
    90, viết tắt của lệnh

Nếu bạn tò mò muốn tìm hiểu thêm về các tùy chọn này, thì hãy xem tài liệu Python về môi trường mã cấp cao nhất là gì. Tài liệu minh họa từng gạch đầu dòng này bằng một đoạn mã ngắn gọn

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

Value or the variable __name__ : __main__
03 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 câu điều kiện chỉ có thể tạo ra các 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ì sẽ xảy ra với giá trị của

Value or the variable __name__ : __main__
03 trong trường hợp đó?

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

Value or the variable __name__ : __main__
03 thành tên của mô-đun

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

Value or the variable __name__ : __main__
03 dưới dạng mô-đun

>>>

Value or the variable __name__ : __main__
0

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

Value or the variable __name__ : __main__
03 trong quá trình nhập, có nghĩa là nó sẽ gọi
Value or the variable __name__ : __main__
96 và ghi đầ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

Value or the variable __name__ : __main__
03 là khác. Nó trỏ tới
Value or the variable __name__ : __main__
98, một chuỗi bằng với tên của mô-đun

Ghi chú. Bạn có thể nhập bất kỳ tệp nào chứa mã Python dưới dạng mô-đun và Python sẽ chạy mã trong tệp của bạn trong quá trình nhập. Tên của mô-đun thường sẽ là tên tệp không có phần mở rộng tệp đối với tệp Python (

Value or the variable __name__ : __main__
99)

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

Value or the variable __name__ : __main__
03 luôn là
Value or the variable __name__ : __main__
04, 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. Đồng thời kiểm tra xem chuỗi
Value or the variable __name__ : __main__
98 đến từ đâu

>>>

Value or the variable __name__ : __main__
9

Toàn cầu

Value or the variable __name__ : __main__
03 có giá trị
Value or the variable __name__ : __main__
04 và
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
65 cho mô-đun
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
66 đã nhập có giá trị
Value or the variable __name__ : __main__
98, là tên của mô-đun dưới dạng chuỗi

Ghi chú. Hầu hết thời gian, môi trường mã cấp cao nhất sẽ là tập lệnh Python mà bạn thực thi và là nơi bạn nhập các mô-đun khác. Tuy nhiên, trong ví dụ này, bạn có thể thấy rằng môi trường mã cấp cao nhất không bị ràng buộc chặt chẽ với việc chạy tập lệnh và cũng có thể là phiên thông dịch chẳng hạn

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

Value or the variable __name__ : __main__
03 sẽ có một trong hai giá trị tùy thuộc vào vị trí của nó

  • Trong môi trường mã cấp cao nhất, giá trị của
    Value or the variable __name__ : __main__
    
    03 là
    Value or the variable __name__ : __main__
    
    04
  • Trong mô-đun đã nhập, giá trị của
    Value or the variable __name__ : __main__
    
    03 là tên của mô-đun dưới dạng chuỗi

Vì Python tuân theo các quy tắc này nên bạn có thể tìm hiểu xem một mô-đun có đang 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

Value or the variable __name__ : __main__
03 với một câu lệnh có điều kiện, câu lệnh này đưa bạn đến vòng tròn đầy đủ của thành ngữ tên-chính

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

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

Value or the variable __name__ : __main__
03 như được hiển thị trong khối mã ở trên, sau đó chạy lại tệp dưới dạng tập lệnh

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

Khi chạy mã của bạn dưới dạng tập lệnh, cả hai lệnh gọi tới

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
64 đều thực thi

Tiếp theo, bắt đầu phiên phiên dịch mới và nhập lại

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
66 dưới dạng mô-đun

>>>

Value or the variable __name__ : __main__
0

Khi bạn nhập tệp của mình dưới dạng mô-đun, mã mà bạn đã lồng trong

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 không thực thi

Bây giờ bạn đã biết cách thức hoạt động của thành ngữ name-main trong Python, bạn có thể tự hỏi mình nên sử dụng nó chính xác khi nào và như thế nào trong mã của mình—và khi nào nên tránh sử dụng nó

Loại bỏ các quảng cáo

Khi nào bạn nên sử dụng thành ngữ tên-chính trong Python?

Bạn sử dụng thành ngữ này khi bạn muốn tạo một điểm nhập bổ sung cho tập lệnh của mình để tệp của bạn có thể truy cập được dưới dạng tập lệnh độc lập cũng như mô-đun có thể nhập được. Bạn có thể muốn điều đó khi tập lệnh của bạn cần thu thập đầu vào của người dùng

Trong phần đầu tiên của hướng dẫn này, bạn đã sử dụng thành ngữ name-main cùng với

ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
03 để thu thập thông tin đầu vào của người dùng khi chạy
Value of the __name__ : testing
76 dưới dạng tập lệnh. Đó là một lý do tuyệt vời để sử dụng thành ngữ tên-chính

Ngoài ra còn có các cách khác để thu thập đầu vào của người dùng trực tiếp từ dòng lệnh. Ví dụ: bạn có thể tạo một điểm nhập dòng lệnh cho một tập lệnh Python nhỏ với

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
69 và thành ngữ tên-chính

Value of the __name__ : testing
61

Thay vì thu thập thông tin đầu vào của người dùng bằng

ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
03, bạn đã thay đổi mã trong
Value of the __name__ : testing
76 để người dùng của bạn có thể cung cấp văn bản dưới dạng đối số trực tiếp từ dòng lệnh

Value of the __name__ : testing
62

Python thu thập một số từ tùy ý vào

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
69, đây là danh sách các chuỗi đại diện cho tất cả các đầu vào. Mỗi từ được coi là một đối số mới khi một ký tự khoảng trắng ngăn cách nó với các từ khác

Bằng cách thực thi mã xử lý đầu vào của người dùng và lồng nó vào tên-chính thành ngữ, bạn cung cấp một điểm nhập bổ sung cho tập lệnh của mình

Nếu bạn muốn tạo một điểm vào cho một gói, thì bạn nên tạo một tệp

Value of the __name__ : testing
603 dành riêng cho mục đích đó. Tệp này đại diện cho một điểm vào mà Python gọi khi bạn chạy gói của mình bằng tùy chọn
Value or the variable __name__ : __main__
09

Value of the __name__ : testing
63

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

Value of the __name__ : testing
605, như minh họa ở trên, thì bạn chạy mã được xác định trong tệp
Value of the __name__ : testing
603. Tùy chọn
Value or the variable __name__ : __main__
09 theo sau là tên mô-đun
Value of the __name__ : testing
605 gọi
Value of the __name__ : testing
603 từ mô-đun
Value of the __name__ : testing
605

Bởi vì

Value of the __name__ : testing
605 là một gói chứ không phải là một tập lệnh giao diện dòng lệnh (CLI) nhỏ, nên nó có một tệp
Value of the __name__ : testing
603 chuyên dụng làm điểm vào

Ghi chú. Có những ưu điểm bổ sung của mã lồng nhau, chẳng hạn như bộ sưu tập đầu vào của người dùng, dưới thành ngữ tên-chính. Vì mã lồng nhau đó không thực thi trong quá trình nhập mô-đun, nên bạn có thể chạy thử nghiệm đơn vị từ một mô-đun thử nghiệm riêng biệt trên các chức năng của mình mà không tạo ra tác dụng phụ

Mặt khác, các tác dụng phụ có thể xảy ra do mô-đun thử nghiệm cần nhập mô-đun của bạn để chạy thử nghiệm đối với mã của bạn

Trong tự nhiên, bạn có thể gặp nhiều lý do khác để sử dụng thành ngữ tên-chính trong mã Python. Tuy nhiên, việc 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 tên-chính thành ngữ?

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

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 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 thử 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

Value of the __name__ : testing
64

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

Value of the __name__ : testing
65

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

Value or the variable __name__ : __main__
03 bằng với
Value or the variable __name__ : __main__
04, biểu thức điều kiện trả về
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
7 và Python được gọi là
Value of the __name__ : testing
617. Bộ thử nghiệm nhỏ đã chạy và thử nghiệm của bạn đã thành công

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

>>>

Value of the __name__ : testing
66

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ị sẽ không chạy trừ khi bạn thực thi mô-đun trong môi trường mã cấp cao nhất

Mặc dù điều này hoạt động đối với các tệp nhỏ, nhưng nó thường không được coi là phương pháp hay. Không nên trộn lẫ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. Làm theo lời khuyên này thường tạo ra 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

Value of the __name__ : testing
618 vào 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 họa về những gì mã của họ có thể làm.

Value of the __name__ : testing
67

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

Value of the __name__ : testing
619 dưới dạng tập lệnh, họ sẽ xem qua chức năng của nó

Value of the __name__ : testing
68

Bạn có thể tìm thấy cách thực thi mã demo như vậy trong thành ngữ name-main, nhưng có thể cho rằng có nhiều cách tốt hơn để minh họa cách sử dụng chương trình của bạn. Bạn có thể viết các chuỗi 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 tài liệu phù hợp cho dự án của mình

Hai ví dụ trước đề cập đến hai trường hợp sử dụng dưới mức tối ưu phổ biến của tên-chính thành ngữ. Ngoài ra còn có các tình huống khác khi tốt nhất nên tránh thành ngữ tên-chính trong Python

  • Một kịch bản thuần túy. Nếu bạn viết một tập lệnh để chạy dưới dạng tập lệnh, thì bạn có thể đặt phần thực thi mã của mình vào không gian tên chung mà không cần lồng nó vào 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 bắt buộc các mẫu hướng đối tượng mạnh. Bạn không cần phải dính vào các mẫu thiết kế từ các ngôn ngữ khác khi lập trình bằng 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 bạn nên tạo một tệp riêng làm điểm vào của mình. Sau đó, bạn nhập mã từ mô-đun của mình vào đó thay vì xử lý đầu vào của người dùng bằng 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

    Value of the __name__ : testing
    
    620 tích hợp sẵn thay vì
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    69

Có thể bạn đã từng sử dụng thành ngữ tên-chính 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 Python thành ngữ hơn cho từng tình huống này, hãy theo các liên kết được cung cấp

❌ Trường hợp sử dụng dưới mức tối ưu✅ Thay thế tốt hơn Thực thi mã kiểm traTạo mô-đun thử nghiệm chuyên dụngTrình diễn mãXây dựng tài liệu dự án và bao gồm các ví dụ trong chuỗi tài liệu của bạnTạo tập lệnh thuần túyChạy dưới dạng tập lệnhCung cấp điểm nhập chương trình CLI phức tạpTạo mô-đun CLI chuyên dụng

Mặc dù bây giờ bạn đã biết khi nào nên tránh thành ngữ tên chính, nhưng bạn vẫn có thể thắc mắc về cách sử dụng nó tốt nhất trong một tình huống hợp lệ

Loại bỏ các quảng cáo

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

Thành ngữ tên-chính trong Python chỉ là một câu lệnh có điều kiện, vì vậy bạn có thể sử dụng nó ở bất cứ đâu trong tệp của mình—thậm chí nhiều 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ữ tên-chính ở cuối tập lệnh của mình

Value of the __name__ : testing
69

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

Ghi chú. Trong Python, mã trong thân hàm hoặc lớp không chạy trong khi định nghĩa. Mã đó chỉ thực thi khi bạn gọi một hàm hoặc khởi tạo một lớp

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

Các mục nhập luôn được đặt ở đầu tệp, ngay sau bất kỳ nhận xét và chuỗi tài liệu nào của mô-đun cũng như trước các hằng số và toàn cầu của mô-đun. (Nguồn)

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

Value of the __name__ : testing
622 ở đầu tệp trong
Value of the __name__ : testing
76

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

Tuy nhiên, bạn thậm chí không cần nhập

Value of the __name__ : testing
622 khi bạn chỉ muốn nhập
ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
04 dưới dạng mô-đun

Để giải quyết vấn đề này mà vẫn tuân thủ các đề xuất về kiểu dáng được xác định trong PEP 8, bạn có thể sử dụng thành ngữ tên-chính thứ hai. Bằng cách lồng phần nhập của

Value of the __name__ : testing
622 vào một thành ngữ tên-chính, bạn có thể giữ tất cả các phần nhập ở đầu tệp nhưng tránh nhập
Value of the __name__ : testing
622 khi bạn không cần sử dụng nó

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

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

Value of the __name__ : testing
622 dưới một thành ngữ tên-chính 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
Value of the __name__ : testing
622 khi bạn sử dụng
ScriptP1 is imported into another file.
It is a function in the ScriptP1.
Called from the ScriptP2.
04 làm mô-đun

Ghi chú. Bạn có thể sẽ không gặp thiết lập này thường xuyên, nhưng đây là ví dụ về thời điểm có thể hữu ích khi sử dụng nhiều thành ngữ tên-chính trong một tệp

Tuy nhiên, khả năng đọc vẫn được tính, vì vậy việc giữ câu lệnh nhập ở đầu mà không có thành ngữ tên-chính thứ hai thường sẽ là lựa chọn tốt hơn. Tuy nhiên, thành ngữ tên-chính thứ hai có thể hữu ích nếu bạn đang làm việc trong môi trường có nguồn lực hạn chế

Như bạn đã học trước đó trong hướng dẫn, có ít cơ hội sử dụng thành ngữ tên-chính hơn bạn tưởng. Đối với hầu hết các trường hợp sử dụng đó, đặt một trong các kiểm tra có điều kiện này ở cuối tập lệnh 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 nên đi vào khối mã điều kiện. Tài liệu Python cung cấp hướng dẫn rõ ràng về cách sử dụng thành ngữ của tên-chính thành ngữ về vấn đề đó

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

Value of the __name__ : testing
631 có thể cải thiện độ rõ ràng và chính xác của mã. (Nguồn)

Giữ mã dưới thành ngữ tên-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 dưới thành ngữ tên-chính, thì thay vào đó, bạn nên xác định một hàm

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

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

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

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

Ghi chú. Định nghĩa

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
5 trong Python có nghĩa khác với các ngôn ngữ khác, chẳng hạn như Java và C. Trong Python, đặt tên hàm này là chính chỉ là một quy ước. Bạn có thể đặt tên bất kỳ cho chức năng này—và như bạn đã thấy trước đây, bạn thậm chí không cần sử dụng nó

Các ngôn ngữ hướng đối tượng khác định nghĩa hàm

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
5 làm điểm vào cho chương trình. Trong trường hợp đó, trình thông dịch gọi ngầm một hàm tên là
$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
5, và chương trình của bạn sẽ không hoạt động nếu không có nó

Trong phần này, bạn đã học được rằng có lẽ bạn nên viết thành ngữ tên-chính ở cuối tập lệnh của mình

Nếu bạn có nhiều dòng mã mà bạn định lồng vào bên dưới

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

Bây giờ bạn đã biết cách sử dụng thành ngữ name-main, bạn có thể thắc mắc tại sao nó trông khó hiểu hơn các mã Python khác mà bạn đã từng sử dụng

Loại bỏ các quảng cáo

Mã soạn sẵn thành ngữ có nên được đơn giản hóa không?

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ữ tên-chính của Python là một điểm bắt đầu tương tự như các hàm

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
5 trong Java hoặc C, nhưng vụng về hơn

Func __ name __ trong python là gì?
Meme dựa trên web truyện tranh (Hình ảnh. Mike Organisciak)

Mặc dù chắc chắn là hài hước và dễ hiểu, nhưng meme này dễ gây hiểu lầm 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 vào của

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

Thành ngữ chính tên Python không đặc biệt. Nó chỉ là một kiểm tra có điều kiện. Thoạt nhìn, nó có vẻ khó hiểu, đặc biệt khi bạn mới bắt đầu làm việc với Python và bạn đã quen với cú pháp gọn gàng và thanh lịch của Python. Xét cho cùng, thành ngữ name-main bao gồm một biến dunder từ không gian tên chung và một chuỗi cũng là một giá trị dunder

Vì vậy, nó không phải là loại điểm vào mà main đại diện trong các ngôn ngữ khác. Nhưng tại sao nó trông giống như vậy?

Nếu bạn duyệt qua kho lưu trữ của danh sách gửi thư ý tưởng Python, PEP bị 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 kinh nghiệm tranh luận rằng thành ngữ này không khó hiểu 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ỉ lưu hai dòng mã
  • 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 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ó thường xuyên
  • Nó phơi bày sự phức tạp. Các biến và hàm Dunder là một phần quan trọng của Python khi bạn tìm hiểu 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 điểm khởi đầu cho người học khơi dậy sự tò mò và cho họ cái nhìn đầu tiên về cú pháp của Python
  • Nó duy trì khả năng tương thích ngược. Thành ngữ tên chính đã trở thành 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

Được rồi, vì vậy bạn đang mắc kẹt với ________ 63 vào lúc này. Có vẻ như sẽ rất hữu ích nếu bạn tìm ra một cách hay để đề cập đến nó một cách nhất quán và chính xác

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

Bạn có thể gọi nó là gì?Hiển thị/Ẩn

Có thể bạn sẽ thảo luận về việc sử dụng thành ngữ tên-chính vào một thời điểm nào đó trong sự nghiệp Python của mình. Đó là một cách diễn đạt dài để viết và thậm chí còn rườm rà hơn khi nói to, vì vậy bạn cũng có thể tìm một cách hay để 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ộ cụm từ

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

  • Quy ước
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    3 (Nguồn)
  • Biểu thức
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    3 (Nguồn)
  • Thành ngữ
    Value of the __name__ : testing
    
    645 (Nguồn)
  • Thành ngữ
    Value of the __name__ : testing
    
    646 (Nguồn)
  • Thành ngữ
    $ python echo.py
    Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
    ooo
    oo
    o
    .
    
    3 (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 về cách nói về

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

Nếu bạn muốn thúc đẩy việc tiêu chuẩn hóa một tên ngắn hơn cho thành ngữ, thì hãy bảo bạn bè của bạn gọi nó là thành ngữ chính tên. Đó 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ữ này hữu ích thì có thể nó sẽ trở nên phổ biến

Nếu bạn tò mò, hãy tham gia 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ữ nguyên thành ngữ tên-chính như hiện tại

Sự kết luận

Bạn đã biết tác dụng của thành ngữ

$ python echo.py
Yell something at a mountain: HELLOOOO ECHOOOOOOOOOO
ooo
oo
o
.
3 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 chứ không phải khi bạn nhập tệp dưới dạng mô-đun. Tốt nhất là sử dụng nó khi bạn muốn thu thập thông tin đầu vào của người dùng trong quá trình chạy tập lệnh và tránh tác dụng phụ khi nhập mô-đun của bạn—ví dụ: để kiểm tra đơn vị các chức năng của mô-đun

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 cách tiếp cận tốt hơn và thành ngữ hơn mà bạn có thể thực hiện trong các tình huống đó. Có thể bạn đã chấp nhận thành ngữ tên chính 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ế cách 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 mình?

Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để hiểu thành ngữ tên-chính

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Func __ name __ trong python là gì?

Gửi cho tôi thủ thuật Python »

Giới thiệu về Martin Breuss

Func __ name __ trong python là gì?
Func __ name __ trong python là gì?

Martin thích tự động hóa, trò đùa ngớ ngẩn và rắn, tất cả đều phù hợp với cộng đồng Python. Anh ấy thích học hỏi và khám phá và cũng sẵn sàng nói về nó. Anh ấy viết và ghi nội dung cho Real Python và CodingNomads

» Thông tin thêm về Martin


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Func __ name __ trong python là gì?

Aldren

Func __ name __ trong python là gì?

Geir Arne

Func __ name __ trong python là gì?

Ian

Func __ name __ trong python là gì?

kate

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Func __ name __ trong python là gì?

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng các chuyên gia Pythonistas

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Tại sao __ tên __ được sử dụng trong Python?

__name__ là biến tích hợp dùng để đánh giá tên của mô-đun hiện tại. Do đó, 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 nhập ở nơi khác bằng cách kết hợp tập lệnh đó với câu lệnh if , như minh họa bên dưới.

__ tên __ Trong Python w3schools là gì?

Một chương trình Python sử dụng điều kiện if __name__ == '__main__' để chỉ chạy mã bên trong câu lệnh if khi chương trình được chạy trực tiếp bởi trình thông dịch Python. The code inside the if statement is not executed when the file's code is imported as a module.

Ý nghĩa của if __ name __ == '__ Main__ là gì?

if __name__ == “chính”. chỉ được sử dụng để thực thi một số mã nếu tệp được chạy trực tiếp và không được nhập .

_ và __ nghĩa là gì trong Python?

__ mô-đun __ trong Python là gì?

Thuộc tính __module__ là dùng để truy xuất mô-đun nơi chức năng được xác định , để đọc mã nguồn hoặc đôi khi để nhập lại .

func có nghĩa là gì trong Python?

func là đối số được cấp cho hàm ID_decorator(). Biểu thức func() có nghĩa là " gọi hàm được gán cho biến func . " Trình trang trí đang lấy một hàm khác làm đối số và trả về một hàm mới (được định nghĩa là trình bao bọc ) sẽ thực thi hàm đã cho func khi nó được chạy.