Hàm main trong Python với ví dụ: Tìm hiểu về __main__
Trước khi đi sâu hơn vào lập trình Python, chúng ta cần làm quen với hàm main trong Python và hiểu rõ sự quan trọng của nó.
Cùng xem đoạn mã sau đây
def main():
print "hello world!"
print "Guru99"
Ở đây, chúng ta có hai câu lệnh in ra màn hình (print), câu lệnh đầu tiên nằm trong hàm main sẽ in ra “Hello World” và câu lệnh sau đó chạy độc lập và in ra “Guru99”. Khi bạn chạy chương trình:
-
Chỉ có “Guru99” được in ra
-
Cụm từ “Hello World” sẽ không được in ra.
Đó là bởi vì chúng ta đã không khai báo lời gọi hàm “if__name __ ==” __main__ “.
-
Khi trình thông dịch Python đọc một tệp mã nguồn, nó sẽ thực thi tất cả các câu lệnh có trong đó.
-
Khi Python chạy “tệp chứa mã nguồn” dưới vai trò là chương trình chính, nó sẽ gán giá trị (“__main__”) cho biến (__name__).
-
Khi bạn thực thi hàm main, nó sẽ đọc câu lệnh “if” và kiểm tra xem biến __name__ có mang giá trị __main__ không.
-
Trong Python, “if__name __ ==” __main__ “ cho phép bạn chạy các tệp chứa mã nguồn Python dưới dạng các mô-đun có thể tái sử dụng hoặc các chương trình độc lập.
Giống như C, Python sử dụng == để so sánh và = để gán. Trình thông dịch Python sử dụng hàm main theo hai cách
-
Khi dùng để nạp: __name __ = tên tệp của mô-đun
Câu lệnh if sẽ không được thỏa mãn và các đoạn mã nguồn trong __main__ sẽ không được thực thi.
-
Khi dùng để chạy trực tiếp: __ name __ = __ main__
Câu lệnh if sẽ được thỏa mãn và các đoạn mã nguồn trong __main__ sẽ được thực thi.
-
Vì vậy, khi mã nguồn được thực thi, nó sẽ kiểm tra tên mô-đun bằng “if.”
Cần lưu ý sau khi khai báo hàm main, bạn cần gọi tới mã nguồn bằng câu lệnh: if__name __ == “__main__” và sau đó 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 như hình dưới đây.
Lưu ý : Cần chắc chắn rằng sau khi khai báo hàm main, bạn cần thụt đầu dòng chứ không viết mã nguồn ngay bên dưới câu lệnh “def main ():”; nếu không bạn sẽ gặp phải lỗi thụt lề (indent error).
def main():
print("Hello World!")
if __name__== "__main__":
main()
print("Guru99")
Ví dụ trên sử dụng Python 3, nếu bạn muốn sử dụng Python 2, vui lòng chạy đoạn mã nguồn sau:
def main():
print "Hello World!"
if __name__== "__main__":
main()
print "Guru99"
Trong Python 3, bạn không cần sử dụng if__name. Chương trình sau vẫn có thể chạy:
def main():
print("Hello World!")
main()
print("Guru99")