1. Một chương trình Python được thực thi như thế nào?
Python thường được gọi là một ngôn ngữ thông dịch (interpreted language). Tuy nhiên, quá trình thực thi một chương trình Python bao gồm cả quá trình biên dịch (compiled) và thông dịch (interpreted). Chúng ta cùng xem sơ đồ bên dưới để hiểu hơn về quá trình thực thi một chương trình Python.
Đầu tiên, mã nguồn Python được viết trong file có đuôi mở rộng là .py
. Sau đó, trình biên dịch CPython sẽ đọc từng dòng code Python. Nó sẽ kiểm tra cú pháp của mỗi dòng code Python. Nếu gặp lỗi thì CPython sẽ ngừng biên dịch và thông báo lỗi.
Nếu không có lỗi thì CPython sẽ biên dịch mã nguồn Python thành bytecode và được lưu trữ trong file có đuôi mở rộng là .pyc
hoặc .pyo
. CPU không thể thực thi được bytecode mà bytecode cần được gửi đến PVM (Python Virtual Machine) để thông dịch thành mã máy (machine code) để thực thi. Nếu có lỗi xảy ra thì quá trình thực thi chương trình sẽ bị ngừng và xuất thông báo lỗi. Các lỗi này được gọi là lỗi runtime.
Tại sao phải biên dịch mã nguồn thành bytecode rồi thông dịch để thực thi? Ưu điểm của việc này là chỉ cần biên dịch source code một lần thành bytecode. Sau đó, có thể mang bytecode này thực thi trên các nền tảng khác nhau (Windows, Linux, MacOS,…). Tuy nhiên, nhược điểm là quá trình chạy chương trình Python thường chậm hơn so với các ngôn ngữ khác như C/C++.
2. Ví dụ về thực thi một chương trình Python
Ví dụ có một file source code Python sumPython.py
nằm trong folder C:\python-examples như bên dưới:
a = 5
b = 10
print("Sum = ", a + b)
Sử dụng Command Prompt để biên dịch code Python trong file sumPython.py
. Đầu tiên, di chuyển folder hiện tại sang folder C:\python-examples. Khi đang ở C:\python-examples, sử dụng lệnh python -m py_compile sumPython.py
để biên dịch code Python.
Sau khi biên dịch xong, một folder __pycache__ được tạo ra và chứa file bytecode sumPython.cpython-310.pyc vừa được tạo ra khi biên dịch xong.
Nội dung các lệnh trong file bytecode được mã hóa dưới dạng hệ cơ số 16.
Sau đó, di chuyển folder hiện tại sang folder C:\python-examples\__pycache__ rồi tiến hành thông dịch file bytecode sumPython.cpython-310.pyc để được kết quả chương trình.
Lưu ý: Thông thường, chúng ta sẽ dùng Python IDE để chạy chương trình Python và không cần phải thực hiện các bước rườm rà trên. Các Python IDE đã hỗ trợ sẵn các thao tác thực thi biên dịch và thông dịch một chương trình Python với chỉ 1 nút nhấn.