執行 Python 代碼的方式
Python 可以通過多種方式來執行代碼。根據你的需求——無論是快速測試一小段代碼、進行數據分析,還是發佈一個完整的應用程式——選擇合適的執行方法都能大大提升你的工作效率。
這篇文章將詳細介紹五種最常見的 Python 代碼執行方法,並分析它們各自的優缺點,讓你能夠輕鬆應對各種開發場景。
⚙️ 一:REPL (Read-Eval-Print Loop) 互動模式
REPL 是一種互動式的程式設計環境,讓你能夠輸入一行代碼,系統會立即「讀取 (Read)、評估 (Eval)、印出 (Print)」,然後等待你的下一行指令 (Loop)。這是最直接的 Python 執行方式。
要啟動 REPL,只需在你的終端機 (Terminal) 中輸入 python
或 python3
:
$ python
Python 3.10.15 | packaged by Anaconda, Inc. | (main, Oct 3 2024, 07:22:19) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
接著,你就可以直接輸入 Python 代碼並立即看到結果。
範例:
>>> a = 10
>>> b = 20
>>> a + b
30
👍 優點
- 即時反饋:非常適合用來快速測試語法、函式功能或演算法的小片段。
- 直接輸出:不使用 print 函數也可以打印。
- 學習工具:對初學者來說,是探索 Python 語言特性的絕佳工具。
- 無需檔案:不需要建立
.py
檔案,方便快捷。
👎 缺點
- 代碼無法保存:一旦關閉 REPL,所有輸入的代碼都會遺失。
- 不適合複雜程式:難以編寫和維護多行、結構複雜的程式。
- 編輯困難:輸入後的代碼不易修改。
📜 二:執行 Script 檔案 (.py)
這是最傳統也最常見的 Python 程式執行方式。你將代碼儲存在一個以 .py
為副檔名的檔案中,然後透過終端機指令來執行整個檔案。
範例:
建立一個名為
my_script.py
的檔案,並寫入以下內容:python# my_script.py def greet(name): print(f"Hello, {name}! This is from a script file.") if __name__ == "__main__": user_name = "Alice" greet(user_name)
在終端機中,使用
python
指令執行這個檔案:bash$ python3 my_script.py Hello, Alice! This is from a script file.
👍 優點
- 可重用與可維護:代碼被儲存下來,方便重複使用、修改和版本控制。
- 標準開發方式:適用於開發任何規模的專案,從簡單的自動化腳本到大型應用程式。
- 結構化:可以將代碼組織成函式、類別和模組。
👎 缺點
- 互動性較差:每次修改後都需要重新執行整個腳本才能看到結果,不像 REPL 那樣即時。
- 需要開發環境:需要使用文本編輯器或 IDE (Integrated Development Environment) 來編寫代碼。
📓 三:Jupyter Notebook
Jupyter Notebook 是一個基於網頁的互動式計算環境,讓你可以在稱為「儲存格 (Cell)」的區塊中編寫和執行代碼。它特別適合數據科學、機器學習和學術研究。除了標準的 Jupyter,還有如 Google Colab、Kaggle Notebook 等變體。
範例:
在 Jupyter Notebook 中,你可以建立一個 Markdown 儲存格來寫筆記,再建立一個 Code 儲存格來執行代碼。
Markdown 儲存格:
* 簡單的數據分析例子 (這是 markdown 語法)
以上儲存格支持 markdown 語法,用於說明。執行後可渲染 markdown 內容。
Code 儲存格:
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
以上儲存格支持 python 語法,用於執行代碼。執行後輸出會直接顯示在該儲存格下方。
👍 優點
- 互動與視覺化:完美結合代碼、執行結果、文字說明和圖表,非常適合做報告和教學。
- 逐步執行:可以獨立執行每個儲存格,方便進行探索性數據分析和偵錯。
- 儲存執行結果:可以儲存執行結果。
- 易於分享:
.ipynb
檔案可以輕鬆分享,其他人可以重現你的分析過程。
👎 缺點
- 狀態管理混亂:儲存格可以不按順序執行,容易導致變數狀態混亂,影響結果的可重現性。
- 不適合傳統軟體開發:不適用於建構 Web 後端、桌面應用或複雜的系統腳本。
- 版本控制困難:
.ipynb
檔案的原始格式是 JSON,不易於使用 Git 等工具進行版本比較。
📦 四:使用 pipx
安裝並執行應用程式
當你想在系統中安裝 Python 開發的終端機工具(例如代碼格式化工具、Linter)時,pipx
是絕佳選擇。它會為每個應用程式建立獨立的虛擬環境,從而避免了不同工具之間的依賴衝突,讓你像使用系統原生指令一樣使用它們。
一個很好的例子是 black
,一個「不妥協的 Python 代碼格式化工具」(The Uncompromising Code Formatter),它可以自動將你的代碼統一成標準風格。
範例:
首先,安裝
pipx
:bashpip install pipx pipx ensurepath
(安裝後可能需要重啟終端機)
使用
pipx
安裝black
:bashpipx install black
假設你有一個格式混亂的 Python 檔案
messy_code.py
:python# messy_code.py def my_function(x, y,z): result=x+y+z print('The result is:',result)
在終端機中直接執行
black
來格式化這個檔案:bash> black messy_code.py
終端機會顯示:
bashreformatted messy_code.py All done! ✨ 🍰 ✨ 1 file reformatted.
現在
messy_code.py
的內容已經被自動整理好了:python# messy_code.py def my_function(x, y, z): result = x + y + z print("The result is:", result)
👍 優點
- 環境隔離:每個工具都有自己獨立的環境,完美解決了依賴衝突問題。
- 使用方便:安裝後的 Python 工具可以直接在終端機中當作原生指令使用,無需啟動虛擬環境。
- 管理簡單:輕鬆升級或卸載工具,不會污染全域或專案的 Python 環境。
👎 缺點
- 特定用途:它主要用於安裝和執行「全域範圍」的 CLI 工具,而不是用於管理單一專案的依賴庫(這應該使用
pip
和venv
)。 - 學習成本:需要額外學習一個新工具的使用方法。
🖥️ 五:打包成可執行檔 (.exe)
當你希望將 Python 程式分享給沒有安裝 Python 環境的用戶時,可以將其打包成一個獨立的可執行檔(如 Windows 的 .exe
或 macOS 的 App)。PyInstaller
是實現這一點的最流行工具之一。
範例:
首先,安裝
PyInstaller
:bashpip install pyinstaller
建立一個簡單的 Python 腳本,例如
app.py
:python# app.py print("這是一個獨立的應用程式!") input("按 Enter 鍵結束...")
使用
PyInstaller
進行打包。--onefile
參數會將所有東西打包成單一檔案:bashpyinstaller --onefile app.py
完成後,你可以在
dist
資料夾中找到生成的可執行檔app
(或app.exe
)。
👍 優點
- 方便分發:用戶無需安裝 Python 或任何依賴庫即可執行你的程式。
- 專業外觀:打包後的程式看起來就像一個原生的桌面應用。
- 保護源碼:雖然不是完全加密,但相較於直接分享
.py
檔案,能提供一定程度的源碼保護。
👎 缺點
- 檔案體積大:由於需要包含 Python 解譯器和所有依賴庫,打包後的檔案通常很大。
- 可能被誤判為病毒:某些防毒軟體可能會對
PyInstaller
生成的檔案產生誤報。 - 打包過程複雜:對於包含複雜依賴(如 C 擴充套件)的專案,打包過程可能會遇到各種問題。
📊 總結比較
方法 | 主要用途 | 優點 | 缺點 |
---|---|---|---|
REPL 互動模式 | 快速測試、學習語法 | 即時反饋、無需檔案 | 無法保存、不適合複雜程式 |
Script 檔案 (.py) | 開發腳本、模組和應用程式 | 可重用、結構化、標準開發方式 | 互動性差 |
Jupyter Notebook | 數據分析、學術研究、教學 | 互動性強、結合代碼與文檔、視覺化 | 狀態管理混亂、不適合傳統軟件開發 |
pipx | 安裝和執行 Python CLI 工具 | 環境隔離、使用方便 | 用途單一 |
打包成可執行檔 | 分發給非技術用戶 | 無需 Python 環境、方便部署 | 檔案體積大、打包過程可能複雜、易被誤報為病毒 |
✨ 結語
掌握不同的 Python 執行方法,使你能夠輕鬆使用 Python,各種方法都有獨特的應用場景。請根據自己的需求,選擇最合適的工具。