當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟:
開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py
檔案。
例如,一個簡單的 Python 程式可能如下:
print("Hello, Python!")
這只是程式碼的起點,Python 需要經過一系列處理後才能執行它。
Python 直譯器(Interpreter)首先會讀取 .py
檔案,進行詞法分析 (Lexical Analysis) 和 語法解析 (Parsing),確保程式碼符合語法規則。
例如,如果語法錯誤,如漏掉括號,Python 會在此階段報錯。
範例錯誤:
print("Hello, Python!" # 缺少關閉括號
Python 會回傳:
SyntaxError: unexpected EOF while parsing
如果 Python 解析成功,下一步 Python 直譯器會將程式轉換成位元組碼 (Bytecode),這是一種中間格式,主要目的是讓 Python 程式執行更有效率。
這個 .pyc
檔案通常會存放在 __pycache__
目錄中。
範例:
main.py -> __pycache__/main.cpython-<version>.pyc
這個 .pyc
檔案包含了 Python 虛擬機器 (PVM) 可執行的指令。
Python 直譯器內建的 Python 虛擬機器 (Python Virtual Machine, PVM) 負責執行位元組碼。PVM 會逐條解釋 .pyc
的指令,並執行相應的操作。
這部分類似 Java 虛擬機 (JVM),可以理解為 Python 內部的一個執行環境,讓程式碼能在不同平台(Windows、macOS、Linux)上運行,而不需要重新編譯。
最終,PVM 執行 Python 程式時,會與作業系統進行溝通,例如:
.txt
或 .csv
檔案。requests
套件可以用來存取 API。GPIO
控制樹莓派 (Raspberry Pi) 的感測器。+-----------------------+
| 1. 撰寫 Python 程式 |
| (編輯器: VS Code) |
+-----------------------+
│
▼
+-----------------------+
| 2. 解析 & 語法檢查 |
| (Syntax Checking) |
+-----------------------+
│
▼
+-----------------------+
| 3. 轉換為位元組碼 |
| (Bytecode: .pyc) |
+-----------------------+
│
▼
+-----------------------+
| 4. PVM 執行位元組碼 |
| (Python 虛擬機) |
+-----------------------+
│
▼
+-----------------------+
| 5. 與作業系統互動 |
| (檔案 / 記憶體 / 網路) |
+-----------------------+
Python 雖然會先轉換為位元組碼 (Bytecode),但它並不像 C++ 或 Java 那樣預先編譯為機器碼 (Machine Code)。
而是透過 Python 虛擬機 (PVM) 逐行解釋並執行,因此 Python 屬於直譯式語言 (Interpreted Language)。
優點:
✔ 跨平台執行,Windows、macOS、Linux 都可運行✔ 可即時執行,不需要額外的編譯步驟
缺點:
❌ 執行速度較 C/C++ 稍慢(但可透過 Cython 或 JIT 加速)
當 Python 直譯器將 .py
檔案轉換為位元組碼 (.pyc
),這些 Bytecode 不能直接在 CPU 上執行,而是需要 Python 虛擬機來解釋並執行。