Python Hàm và phương thức chính: Hiểu hàm def Main()
⚡ Tóm tắt thông minh
Python Hàm main đánh dấu điểm bắt đầu mà trình thông dịch bắt đầu chạy chương trình. Được định nghĩa bằng def main() và đi kèm với điều kiện if __name__ == “__main__”, nó tách biệt mã mô-đun có thể tái sử dụng khỏi việc thực thi kịch bản độc lập.

Là gì Python Chức năng chính?
Python chức năng chính là điểm khởi đầu của bất kỳ chương trình nào. Khi chương trình được chạy, Python Trình thông dịch chạy mã theo trình tự. Hàm chính chỉ được thực thi khi nó được chạy dưới dạng một trình thông dịch khác. Python chương trình. Nó sẽ không chạy hàm chính nếu được nhập khẩu như một mô-đun.
Hàm def main() trong PythonĐể hiểu điều này, hãy xem xét đoạn mã ví dụ sau, một phần cốt lõi của hệ thống. Python lập trình những điều cơ bản:
def main() Ví dụ 1
def main():
print ("Hello World!")
print ("Guru99")
Ở đây, chúng ta có hai đoạn mã in - một đoạn được định nghĩa trong hàm chính là “Hello World!” và đoạn còn lại độc lập, đó là “Guru99”. Khi bạn chạy hàm def main():
- Chỉ một "GuruBản in 99”
- chứ không phải mã “Xin chào thế giới!”
Đó là vì chúng ta đã không khai báo cuộc gọi chức năng “if__name__==”__main__”.
Điều quan trọng là sau khi định nghĩa hàm main, bạn gọi mã bằng if__name__== “__main__” rồi chạy mã, chỉ khi đó bạn mới nhận được đầu ra “hello world!” trong bảng điều khiển lập trình. Hãy xem xét mã sau
def main() Ví dụ 2
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
GuruTrong trường hợp này, số 99 được in ra.
Đây là lời giải thích,
- Thời Gian Python trình thông dịch đọc một tệp nguồn, nó sẽ thực thi tất cả mã được tìm thấy trong đó.
- Thời Gian Python chạy “tệp nguồn” làm chương trình chính, nó đặt biến đặc biệt (__name__) có giá trị (“__main__”).
- Khi bạn thực thi hàm main trong python, nó sẽ đọc câu lệnh “if” và kiểm tra xem __name__ có bằng __main__ hay không.
- In Python “if__name__== “__main__” cho phép bạn chạy Python các tập tin như các mô-đun có thể tái sử dụng hoặc các chương trình độc lập.
Tại sao lại sử dụng hàm main() trong... Python?
Python Việc sử dụng cú pháp `def main()` không bắt buộc, tuy nhiên các lập trình viên giàu kinh nghiệm hầu như đều sử dụng nó trong mọi kịch bản phức tạp. Cú pháp `def main()` mang lại trật tự cho tệp và giúp mã nguồn an toàn để tái sử dụng. Dưới đây là những lý do chính để sử dụng nó:
- Điểm vào rõ ràng: Hàm main() cho người đọc biết chính xác chương trình bắt đầu từ đâu, do đó logic rất dễ theo dõi.
- Các mô-đun có thể tái sử dụng: Code Được bảo vệ bởi điều kiện `if __name__ == “__main__”`, hàm này chỉ chạy khi được thực thi trực tiếp, do đó các tệp khác có thể nhập các hàm của bạn mà không gây ra tác dụng phụ.
- Phạm vi địa phương: Các biến được tạo bên trong hàm main() sẽ giữ nguyên phạm vi cục bộ, điều này tránh được xung đột ngẫu nhiên với các tên biến toàn cục ở những nơi khác trong mô-đun.
- Kiểm tra dễ dàng hơn: Việc tách biệt logic trong hàm main() cho phép bộ kiểm thử gọi trực tiếp hàm đó và kiểm tra kết quả.
- Quy ước chung: Hàm main() là một dấu hiệu được công nhận rộng rãi về điểm bắt đầu của chương trình, giúp cải thiện khả năng bảo trì giữa các nhóm.
Tóm lại, hàm main() là tùy chọn trong... PythonNhưng nó giúp các chương trình lớn hơn vẫn dễ đọc, dễ kiểm thử và an toàn khi nhập khẩu.
Biến __name__ và Python Mô-đun
Để hiểu tầm quan trọng của biến __name__ trong Python phương thức hàm chính, hãy xem xét đoạn mã sau:
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("Value in built variable name is: ",__name__)
Bây giờ hãy xem xét, mã được nhập dưới dạng mô-đun
import MainFunction
print("done")
Đây là giải thích mã: Giống như C, Python sử dụng == để so sánh trong khi = để gán. Python trình thông dịch sử dụng chức năng chính theo hai cách
chạy trực tiếp:
- __tên__=__chính__
- câu lệnh if == True và tập lệnh trong _main_sẽ được thực thi
nhập dưới dạng mô-đun
- __name__= tên tệp của mô-đun
- câu lệnh if == false và tập lệnh trong __main__ sẽ không được thực thi
Khi mã được thực thi, nó sẽ kiểm tra tên mô-đun bằng “if”. Cơ chế này đảm bảo chức năng chính chỉ được thực thi dưới dạng chạy trực tiếp chứ không phải khi được nhập dưới dạng mô-đun.
Các ví dụ trên là Python 3 mã, nếu bạn muốn sử dụng Python 2, hãy xem xét đoạn mã sau
def main(): print "Hello World!" if __name__== "__main__": main() print "Guru99"
In Python 3, bạn không cần sử dụng if__name. Mã sau cũng hoạt động
def main():
print("Hello World!")
main()
print("Guru99")
Lưu ý: Hãy đảm bảo rằng sau khi định nghĩa hàm main, bạn để lại một chút thụt lề và không khai báo mã ngay bên dưới hàm def main(): nếu không, sẽ xảy ra lỗi thụt lề.
Cách truyền các đối số dòng lệnh cho Python chức năng chính
Hàm main() là nơi lý tưởng để xử lý dữ liệu đầu vào do người dùng cung cấp trên dòng lệnh. Python lưu trữ các giá trị này trong danh sách sys.argv, do mô-đun sys tiêu chuẩn cung cấp. Mục đầu tiên, sys.argv[0], là tên tập lệnh và mọi giá trị sau đó là một đối số do người dùng cung cấp.
Ví dụ sau đây đọc và in các đối số dòng lệnh từ bên trong hàm main():
import sys def main(): print("Script name:", sys.argv[0]) print("Arguments passed:", sys.argv[1:]) if __name__ == "__main__": main()
Nếu bạn lưu tệp dưới dạng script.py và chạy python script.py alpha betaChương trình in ra tên tập lệnh và danh sách ['alpha', 'beta']. Vì các giá trị được đưa vào bên trong hàm main(), logic được sắp xếp gọn gàng và dễ kiểm tra.
Dưới đây là một vài mẹo thực tế khi làm việc với nhập liệu dòng lệnh:
- Cắt bỏ tên kịch bản: Sử dụng sys.argv[1:] để chỉ đọc các đối số mà người dùng đã nhập.
- Hãy sử dụng argparse cho các công cụ thực sự: Mô-đun argparse tích hợp sẵn phân tích các cờ, tùy chọn và văn bản trợ giúp một cách an toàn hơn nhiều so với việc đọc sys.argv bằng tay.
- Trả về mã thoát: Bọc lệnh gọi đó dưới dạng sys.exit(main()) để giá trị trả về của main() trở thành trạng thái thoát của tiến trình.
- Xác thực sớm: Hãy kiểm tra số lượng và kiểu dữ liệu của các tham số ở đầu hàm main() trước khi chạy phần còn lại của chương trình.
Mẫu này biến một đoạn mã đơn giản thành một công cụ dòng lệnh đáng tin cậy trong khi vẫn giữ được...ping Mọi bước đều nằm trong một hàm main() duy nhất, có thể kiểm thử được.
Python Hàm main() so với các ngôn ngữ lập trình khác
Các nhà phát triển đến từ C, C++, hoặc là Java thường mong đợi một hàm main() bắt buộc. Python Nó hoạt động khác biệt vì nó là một ngôn ngữ thông dịch, vì vậy trình thông dịch chỉ đơn giản là chạy một tập tin từ dòng đầu tiên đến dòng cuối cùng. Hàm main() trong Python Do đó, nó là một quy ước hơn là một quy tắc.
- C, C++, C#, và Java: Hàm main() là điểm vào bắt buộc. Hệ thống thực thi sẽ tự động gọi hàm này, và mỗi chương trình chỉ được phép có một hàm main().
- Python: Không cần hàm main(). Quá trình thực thi bắt đầu từ dòng đầu tiên của tập tin, và hàm def main() chỉ chạy nếu mã của bạn gọi nó.
- Người bảo vệ: Khối lệnh if __name__ == “__main__” cho phép thực hiện điều này. Python Một mục đích tương tự như hàm main() đã được biên dịch, đó là đánh dấu đoạn mã chỉ nên chạy khi tệp đó là chương trình chính.
Vì vậy, trong khi các ngôn ngữ khác bắt buộc phải có điểm vào main(), Python Nó để lại sự lựa chọn cho bạn, mang lại sự rõ ràng tương tự thông qua quy ước thay vì quy tắc của trình biên dịch.




