Các ngôn ngữ khác [như C và Java] có hàm main[]
được gọi khi chương trình được thực thi. Sử dụng if
này, chúng ta có thể làm cho Python hoạt động giống như chúng, điều này khiến nhiều người cảm thấy quen thuộc hơn
Mã sẽ sạch hơn, dễ đọc hơn và được tổ chức tốt hơn. [vâng, tôi biết điều này là chủ quan]
Có thể import
mã python đó dưới dạng một mô-đun mà không có tác dụng phụ khó chịu
Điều này có nghĩa là có thể chạy thử nghiệm đối với mã đó
Điều này có nghĩa là chúng ta có thể nhập mã đó vào trình bao python tương tác và kiểm tra/gỡ lỗi/chạy nó
Các biến bên trong def main
là cục bộ, trong khi các biến bên ngoài nó là toàn cục. Điều này có thể giới thiệu một vài lỗi và hành vi không mong muốn
Tuy nhiên, bạn không bắt buộc phải viết hàm main[]
và gọi nó bên trong câu lệnh if
Bản thân tôi thường bắt đầu viết các tập lệnh nhỏ dùng một lần mà không có bất kỳ loại chức năng nào. Nếu tập lệnh phát triển đủ lớn hoặc nếu tôi cảm thấy việc đặt tất cả mã đó vào trong một hàm sẽ có lợi cho tôi, thì tôi cấu trúc lại mã và thực hiện. Điều này cũng xảy ra khi tôi viết
class MyApplication[something]:
# My code here
if __name__ == "__main__":
app = MyApplication[]
app.run[]
0 kịch bảnNgay cả khi bạn đặt mã bên trong chức năng chính, bạn không bắt buộc phải viết chính xác như vậy. Một biến thể gọn gàng có thể là
import sys
def main[argv]:
# My code here
pass
if __name__ == "__main__":
main[sys.argv]
Điều này có nghĩa là bạn có thể gọi main[]
từ các tập lệnh khác [hoặc shell tương tác] chuyển các tham số tùy chỉnh. Điều này có thể hữu ích trong các bài kiểm tra đơn vị hoặc khi xử lý hàng loạt. Nhưng hãy nhớ rằng đoạn mã trên sẽ yêu cầu phân tích cú pháp argv, do đó, có lẽ sẽ tốt hơn nếu sử dụng một lệnh gọi khác chuyển các tham số đã được phân tích cú pháp
Theo kinh nghiệm của mình thì trên 90% người biết Python đã từng sử dụng hàm main[]. Nhưng đối với 10% không dùng hàm main[] thì script Python vẫn hoạt động. Thậm chí, 90% người ở trên đôi khi không sử dụng
import sys
def main[argv]:
# My code here
pass
if __name__ == "__main__":
main[sys.argv]
1 nhưng kịch bản của họ vẫn hoạt động. Đã bao giờ bạn tự hỏi tại sao? Giải thích trực tiếpKhi sử dụng
import sys
def main[argv]:
# My code here
pass
if __name__ == "__main__":
main[sys.argv]
2- Tất cả mã của bạn được bao bọc trong một hàm, vì vậy tất cả các biến đều là cục bộ. Các chương trình sử dụng biến cục bộ nhanh hơn các chương trình không sử dụng. Do đó, tập lệnh có
3 có thể chạy nhanh hơn nhiều lầnimport sys def main[argv]: # My code here pass if __name__ == "__main__": main[sys.argv]
- Nếu không có lính canh chính, mã sẽ được thực thi ngay cả khi tập lệnh được nhập dưới dạng mô-đun
- Đó là mã soạn sẵn giúp bảo vệ người dùng khỏi vô tình gọi tập lệnh khi họ không có ý định. Dưới đây là một số vấn đề phổ biến khi phần bảo vệ bị bỏ qua trong tập lệnh
- Nếu bạn nhập tập lệnh không có bảo vệ trong tập lệnh khác [e. g.
4], thì tập lệnh thứ hai sẽ kích hoạt tập lệnh đầu tiên chạy tại thời điểm nhập và sử dụng các đối số dòng lệnh của tập lệnh thứ hai. Điều này hầu như luôn luôn là một sai lầmimport sys def main[argv]: # My code here pass if __name__ == "__main__": main[sys.argv]
- Nếu bạn có một lớp tùy chỉnh trong tập lệnh không có bảo vệ và lưu nó vào tệp pickle, thì việc bỏ chọn lớp đó trong tập lệnh khác sẽ kích hoạt quá trình nhập tập lệnh không có bảo vệ, với các vấn đề tương tự được nêu trong dấu đầu dòng trước đó
Python là một trong những ngôn ngữ lập trình phổ biến nhất để học. Hàm main trong Python đóng vai trò là điểm thực thi của bất kỳ chương trình nào. Xác định chức năng chính trong lập trình Python là điều cần thiết để bắt đầu thực thi chương trình vì nó chỉ được thực thi khi chương trình được chạy trực tiếp và không được thực thi khi được nhập dưới dạng mô-đun
Chức năng chính trong Python là gì?
Trong hầu hết các ngôn ngữ lập trình, có một chức năng đặc biệt được thực hiện tự động mỗi khi chạy chương trình. Đây không là gì ngoài chức năng chính hoặc hàm main[] vì nó thường được biểu thị. Về cơ bản, nó đóng vai trò là điểm khởi đầu để thực hiện chương trình
Trong Python, không cần định nghĩa hàm main mỗi khi viết chương trình. Điều này là do trình thông dịch Python thực thi từ đầu tệp trừ khi một chức năng cụ thể được xác định. Do đó, có một điểm bắt đầu được xác định để thực thi chương trình Python của bạn sẽ hữu ích để hiểu rõ hơn về cách chương trình của bạn hoạt động
Trong hầu hết các chương trình/tập lệnh Python, bạn có thể thấy định nghĩa hàm, theo sau là câu lệnh điều kiện giống như ví dụ dưới đây
def main[]:
print["duythinbmt"]if "__name__" = "__main__":
main[]
Python có cần Hàm chính không?
Không bắt buộc phải có Hàm chính trong Python, tuy nhiên, trong ví dụ trên, bạn có thể thấy, có một hàm gọi là 'main []'. Tiếp theo là câu lệnh 'if' có điều kiện để kiểm tra giá trị của "name" và so sánh nó với chuỗi "main". Khi đánh giá thành True, nó thực thi hàm main[]
Và khi thực thi, nó in ra “Xin chào, Thế giới. ”
Loại mẫu mã này rất phổ biến khi bạn đang xử lý các tệp sẽ được thực thi dưới dạng tập lệnh Python và/hoặc được nhập vào các mô-đun khác
Hãy hiểu cách mã này thực thi. Trước đó, cần phải hiểu rằng trình thông dịch Python đặt “tên” tùy thuộc vào cách mã được thực thi. Vì vậy, hãy tìm hiểu về các chế độ thực thi trong Python
Chế độ thực thi Python
Có hai cách chính để bạn có thể yêu cầu trình thông dịch Python thực thi mã
- Cách phổ biến nhất là thực thi tệp dưới dạng Tập lệnh Python
- Bằng cách nhập mã cần thiết từ tệp Python này sang tệp Python khác
Dù bạn chọn chế độ thực thi nào, Python định nghĩa một biến đặc biệt có tên là name, chứa một chuỗi. Và như tôi đã nói trước đây, giá trị của chuỗi này phụ thuộc vào cách mã được thực thi
Đôi khi, khi bạn đang nhập từ một mô-đun, bạn muốn biết liệu chức năng của một mô-đun cụ thể có đang được sử dụng làm chức năng nhập hay bạn chỉ đang sử dụng chức năng gốc. py [tập lệnh Python] của mô-đun đó
Để giải quyết vấn đề này, Python có một biến tích hợp đặc biệt, được gọi là “tên”. Biến này được gán chuỗi “chính” tùy thuộc vào cách bạn đang chạy hoặc thực thi tập lệnh
"Chính" trong Python là gì?
Chức năng chính của Python là sự khởi đầu của bất kỳ chương trình Python nào. Khi chúng ta chạy một chương trình, trình thông dịch sẽ chạy mã tuần tự và sẽ không chạy hàm chính nếu được nhập dưới dạng mô-đun, nhưng Hàm chính chỉ được thực thi khi nó được chạy dưới dạng chương trình Python
Vì vậy, nếu bạn đang chạy tập lệnh trực tiếp, Python sẽ gán “chính” cho tên, tôi. e. , tên = “chính”. [Điều này xảy ra trong nền]
Kết quả là, cuối cùng bạn viết câu lệnh if có điều kiện như sau
if __name__ == "__main__":
main[]
Do đó, nếu câu lệnh điều kiện đánh giá là True, điều đó có nghĩa là,. py [Python Script] đang được chạy hoặc thực thi trực tiếp
Điều quan trọng là phải hiểu rằng, nếu bạn đang chạy thứ gì đó trực tiếp trên trình bao Python hoặc thiết bị đầu cuối, thì theo mặc định, câu lệnh điều kiện này sẽ là Đúng
Do đó, các lập trình viên viết tất cả các định nghĩa chức năng cần thiết ở trên cùng và cuối cùng viết câu lệnh này ở cuối để sắp xếp mã
Tóm lại biến “tên” giúp bạn kiểm tra xem file đang chạy trực tiếp hay đã được nhập vào
Có một số điều bạn nên ghi nhớ khi viết các chương trình sẽ có chức năng chính. Tôi đã liệt kê chúng trong bốn bước đơn giản. Bạn có thể coi đây là một danh pháp tốt để làm theo khi viết các chương trình Python có chức năng chính trong đó
- Sử dụng các hàm và lớp bất cứ khi nào có thể
- Sử dụng tên để kiểm soát việc thực thi mã của bạn
- Tạo một hàm main[] có mã để chạy
- Tạo một hàm main[] có mã để chạy
Bây giờ, với tất cả thông tin ở trên, tôi nghĩ rằng tất cả chúng ta đã biết thêm về hàm main[] trong Python, chế độ thực thi và điểm vào của chương trình Python. Nó có thể giúp mã của bạn Pythonic hơn và dễ sửa hơn khi gặp một số lỗi