Trước khi đi sâu vào tìm hiểu các kiến thức sâu hơn về ngôn ngữ lập trình Python. Chúng ta sẽ cùng nhau đi làm rõ về vai trò của hàm main trong Python. Điều này là rất cần thiết để bạn hiểu về hàm main và cách sử dụng cũng như vai trò của nó. Qua đó chúng ta sẽ có nền tảng tốt để học tiếp các kiến thức nâng cao hơn trong khóa học Python này.
Ví dụ về hàm main trong Python
Xem xét ví dụ sau đây, ta có một hàm con hello()
và một lệnh print
dùng để in ra câu văn bản “Lập trình không khó!”. Bạn hãy tạo mới một file code python và chạy thử đoạn code này xem sao:
Ví dụ 1: Hàm không được gọi => Không thực thi
def hello(): print("Hello, World!") print("Lập trình không khó!")
Kết quả khi chạy:
Lập trình không khó!
Bạn thấy đó, lệnh print trong hàm hello()
hoàn toàn không được thực hiện, đó là bởi vì bạn chưa gọi nó.
À vậy thì quá đơn giản rồi, gọi hàm đó ra là được mà. Chúng ta cùng thử trong ví dụ 2 nào…
Ví dụ 2: Gọi hàm trực tiếp không có kiểm tra
def hello(): print("Hello, World!") hello() print("Lập trình không khó!")
Bạn thấy đó, mình đã gọi hàm hello()
ra. Do đó, tất nhiên bạn đoán được kết quả khi chạy rồi phải không?
Hello, World! Lập trình không khó!
Nhưng nếu chỉ có từng đó thì đâu xứng đáng để có 1 bài viết như này. Chúng ta cùng xem xét tiếp ví dụ số 3 sau đây để thấy vấn đề nhé.
Ví dụ 3: Vấn đề khi không có hàm main
Trên PyCharm IDE, bạn hãy tạo mới một python package (Chuột phải vào tên Project, chọn New => Python package). Sau đó một ô thoại hiện ra, hãy đặt tên package là “learn_python” chẳng hạn.
Tiếp theo, hãy tạo mới 2 python file trong package này, giả sử là py1.py
và py2.py
. Khi đó, cấu trúc của package learn_python sẽ có các file sau:
learn_python ├── __init__.py ├── py1.py ├── py2.py
Code trong file py1.py
như sau:
def hello(): print("Hello, World! from py1!") hello()
Và code trong file py2.py
như sau:
# Nếu chạy bị lỗi dòng này thì bạn hãy để "import py1" thôi nhé from learn_python import py1 def hello(): print("Hello, World! from py2!") hello()
Chú ý: Dòng đầu tiên trong file py2.py
có chức năng liên kết với file py1.py
để sử dụng. Nếu làm như vậy, bạn có thể dụng các hàm, biến của py1.py
tại file py2.py
. Nội dung này sẽ được học chi tiết ở các bài học sau nên các bạn yên tâm.
Và bây giờ nếu ta chạy file py2.py
thì sẽ ra sao? Kết quả là ta nhận được như sau:
Hello, World! from py1! Hello, World! from py2!
Nhưng rõ ràng file py2.py
ta chỉ gọi hàm của chính nó? Đó là bởi vì chúng ta có import file py1.py
nên file py1.py
đã chạy trước khi chạy file py2.py
. Do đó, lời gọi hàm trong file py1.py
cũng được gọi.
Vai trò của hàm main trong Python
Để tránh việc này xảy ra, ta có thể kiểm tra việc “chỉ gọi hàm khi file code đó là file được chúng ta chạy”. Bằng cách như sau:
if __name__ == '__main__': # to do
Mỗi file code python đều có thuộc tính __name__
. Và thuộc tính __name__
sẽ có giá trị là __main__
nếu nó là file trực tiếp được chạy.
- Khi chúng ta import python file hoặc chạy trực tiếp, trình thông dịch của Python sẽ thực thi tất cả các code mà nó gặp. Do đó, hàm hello() trong file py1.py cũng được gọi.
- File code được gọi trực tiếp sẽ có thuộc tính __name__ là __main__. Lưu ý mỗi bên là 2 dấu gạch dưới.
- Python dùng == để so sánh 2 string cũng như 2 giá trị số.
Giờ ta hãy sửa lại 2 file code trong ví dụ 3 nhé,
Code của file py1.py
:
def hello(): print("Hello, World! from py1!") if __name__ == '__main__': hello()
Và file py2.py
như sau:
# Nếu chạy bị lỗi dòng này thì bạn hãy để "import py1" thôi nhé from learn_python import py1 def hello(): print("Hello, World! from py2!") if __name__ == '__main__': hello()
Thực ra ở file py2.py
sẽ không cần nếu ta chạy trực tiếp. Nhưng chúng ta nên dùng để giúp code được rõ ràng và sáng sủa. Giờ hãy chạy lại xem nhé:
Hello, World! from py2!
Vậy là code đã chạy đúng như mong muốn của chúng ta rồi. Chúng ta sẽ còn gặp nhau trong các bài học tiếp theo của khóa học lập trình Python này nhé.
Để lại một bình luận