Skip to content

執行 Python 代碼的方式

Python 可以通過多種方式來執行代碼。根據你的需求——無論是快速測試一小段代碼、進行數據分析,還是發佈一個完整的應用程式——選擇合適的執行方法都能大大提升你的工作效率。

這篇文章將詳細介紹五種最常見的 Python 代碼執行方法,並分析它們各自的優缺點,讓你能夠輕鬆應對各種開發場景。

⚙️ 一:REPL (Read-Eval-Print Loop) 互動模式

REPL 是一種互動式的程式設計環境,讓你能夠輸入一行代碼,系統會立即「讀取 (Read)、評估 (Eval)、印出 (Print)」,然後等待你的下一行指令 (Loop)。這是最直接的 Python 執行方式。

要啟動 REPL,只需在你的終端機 (Terminal) 中輸入 pythonpython3

powershell
$ 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 代碼並立即看到結果。

範例:

python
>>> a = 10
>>> b = 20
>>> a + b
30

👍 優點

  • 即時反饋:非常適合用來快速測試語法、函式功能或演算法的小片段。
  • 直接輸出:不使用 print 函數也可以打印。
  • 學習工具:對初學者來說,是探索 Python 語言特性的絕佳工具。
  • 無需檔案:不需要建立 .py 檔案,方便快捷。

👎 缺點

  • 代碼無法保存:一旦關閉 REPL,所有輸入的代碼都會遺失。
  • 不適合複雜程式:難以編寫和維護多行、結構複雜的程式。
  • 編輯困難:輸入後的代碼不易修改。

📜 二:執行 Script 檔案 (.py)

這是最傳統也最常見的 Python 程式執行方式。你將代碼儲存在一個以 .py 為副檔名的檔案中,然後透過終端機指令來執行整個檔案。

範例:

  1. 建立一個名為 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)
  2. 在終端機中,使用 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 語法,用於說明。執行後可渲染 markdown 內容。

Code 儲存格:

python
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),它可以自動將你的代碼統一成標準風格。

範例:

  1. 首先,安裝 pipx

    bash
    pip install pipx
    pipx ensurepath

    (安裝後可能需要重啟終端機)

  2. 使用 pipx 安裝 black

    bash
    pipx install black
  3. 假設你有一個格式混亂的 Python 檔案 messy_code.py

    python
    # messy_code.py
    def  my_function(x,   y,z):
      result=x+y+z
      print('The result is:',result)
  4. 在終端機中直接執行 black 來格式化這個檔案:

    bash
    > black messy_code.py

    終端機會顯示:

    bash
    reformatted messy_code.py
    
    All done! 🍰
    1 file reformatted.
  5. 現在 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 工具,而不是用於管理單一專案的依賴庫(這應該使用 pipvenv)。
  • 學習成本:需要額外學習一個新工具的使用方法。

🖥️ 五:打包成可執行檔 (.exe)

當你希望將 Python 程式分享給沒有安裝 Python 環境的用戶時,可以將其打包成一個獨立的可執行檔(如 Windows 的 .exe 或 macOS 的 App)。PyInstaller 是實現這一點的最流行工具之一。

範例:

  1. 首先,安裝 PyInstaller

    bash
    pip install pyinstaller
  2. 建立一個簡單的 Python 腳本,例如 app.py

    python
    # app.py
    print("這是一個獨立的應用程式!")
    input("按 Enter 鍵結束...")
  3. 使用 PyInstaller 進行打包。--onefile 參數會將所有東西打包成單一檔案:

    bash
    pyinstaller --onefile app.py
  4. 完成後,你可以在 dist 資料夾中找到生成的可執行檔 app (或 app.exe)。

👍 優點

  • 方便分發:用戶無需安裝 Python 或任何依賴庫即可執行你的程式。
  • 專業外觀:打包後的程式看起來就像一個原生的桌面應用。
  • 保護源碼:雖然不是完全加密,但相較於直接分享 .py 檔案,能提供一定程度的源碼保護。

👎 缺點

  • 檔案體積大:由於需要包含 Python 解譯器和所有依賴庫,打包後的檔案通常很大。
  • 可能被誤判為病毒:某些防毒軟體可能會對 PyInstaller 生成的檔案產生誤報。
  • 打包過程複雜:對於包含複雜依賴(如 C 擴充套件)的專案,打包過程可能會遇到各種問題。

📊 總結比較

方法主要用途優點缺點
REPL 互動模式快速測試、學習語法即時反饋、無需檔案無法保存、不適合複雜程式
Script 檔案 (.py)開發腳本、模組和應用程式可重用、結構化、標準開發方式互動性差
Jupyter Notebook數據分析、學術研究、教學互動性強、結合代碼與文檔、視覺化狀態管理混亂、不適合傳統軟件開發
pipx安裝和執行 Python CLI 工具環境隔離、使用方便用途單一
打包成可執行檔分發給非技術用戶無需 Python 環境、方便部署檔案體積大、打包過程可能複雜、易被誤報為病毒

✨ 結語

掌握不同的 Python 執行方法,使你能夠輕鬆使用 Python,各種方法都有獨特的應用場景。請根據自己的需求,選擇最合適的工具。

📚 參考資料

KF Software House