Python · 初學者指南 · 2026

為什麼 Python
是 AI 的語言?

從第一行 print("Hello, World!") 開始, 認識 Python 與其他語言(尤其 JavaScript)的根本差異、它的獨特之處, 以及為什麼全世界的 AI 工程師都選擇用它。

#1
2024-2025 TIOBE 排名
70%+
AI / 機器學習專案使用
1991
Guido van Rossum 創造
0
需要寫的分號
01 / 第一印象

第一個程式,差異就出現了

同樣是印出「Hello, World!」,Python 和 JavaScript 寫起來差很多。 Python 的目標是讓程式碼看起來像英文句子,直接、乾淨、沒有多餘的符號。

● PYTHON
print("Hello, World!")
● JAVASCRIPT
console.log("Hello, World!");
▸ 注意看

Python 結尾沒有分號 ;,函式名稱也比較短(print vs console.log)。 這只是冰山一角。Python 整體的設計哲學就是:少寫一點符號,多表達一點意思。

02 / 最大差異

縮排,不是裝飾,而是語法

這是 Python 最讓初學者驚訝的事情:其他語言用 { } 大括號決定程式的「區塊」, 但 Python 用縮排。空白變成了語法的一部分。

● PYTHON
def greet(name):
    if name == "Akira":
        print("歡迎回來!")
    else:
        print("你好,陌生人")

greet("Akira")
● JAVASCRIPT
function greet(name) {
  if (name === "Akira") {
    console.log("歡迎回來!");
  } else {
    console.log("你好,陌生人");
  }
}

greet("Akira");

縮排的視覺結構

每一層縮排就是一個「巢狀層級」,Python 強迫你把程式排得整齊。

def check_score(score):
if score >= 90:
    print("優等")
elif score >= 60:
    print("及格")
else:
    print("再加油")
▸ Python 之父說

「程式碼被讀的次數,遠多於被寫的次數。」 — Guido van Rossum
強制縮排確保了任何 Python 程式碼,不管誰寫,長相都差不多整齊。

03 / 獨特之處

Python 讓你少打字、多做事

Python 不只少了 { };。它在很多地方都做了「讓你寫得更少」的設計。

{ }

不用大括號

區塊用縮排表示,沒有 { } 包圍。少打兩個字,而且永遠不會忘記關。

;

不用分號結尾

一行就是一行,換行就結束了。JavaScript 雖然分號可省,但容易踩坑;Python 直接沒這問題。

var

不用宣告變數型別

直接 x = 10,Python 自己判斷它是整數。不需要寫 letconstint

內建好用語法

if name in listfor x in items,直接像英文一樣讀,初學者很快上手。

[ ]

強大的內建資料結構

List、Dict、Tuple、Set 都是內建型別,寫法簡潔到讓人感動。

列表推導式 (List Comprehension)

一行寫完 for 迴圈 + 條件 + 收集結果。寫熟之後回不去 JavaScript 了。

列表推導式範例

想做出「1 到 10 中所有偶數的平方」這份清單。

● PYTHON
# 一行解決
result = [x**2 for x in range(1, 11) if x % 2 == 0]

print(result)
# [4, 16, 36, 64, 100]
● JAVASCRIPT
// 要用 filter + map
const result = [...Array(10).keys()]
  .map(x => x + 1)
  .filter(x => x % 2 === 0)
  .map(x => x ** 2);

console.log(result);
04 / AI 為什麼選 Python

不是巧合,是生態系

Python 變成 AI 主流語言不是因為它「跑得快」(其實它跑得很慢)。 而是因為一連串歷史和生態的累積。

REASON 01

語法接近數學與虛擬碼

研究員寫論文裡的演算法,翻譯成 Python 幾乎是「直譯」。不用花心思在語言本身,專注在演算法。

REASON 02

NumPy 帶頭啟動生態

2006 年 NumPy 統一了 Python 的數值運算介面,後面所有的 AI 套件都建立在它之上,形成滾雪球效應。

REASON 03

C/C++ 寫底層,Python 寫介面

Python 慢沒關係,真正吃效能的部分(矩陣運算、CUDA 核心)都是 C/C++ 寫的,Python 只是膠水。

REASON 04

學界、業界、社群統一

Google、Meta、OpenAI 的 AI 框架(TensorFlow、PyTorch)都以 Python 為主要 API,沒人想改。

REASON 05

Jupyter Notebook 改變遊戲規則

能一邊寫程式、一邊看圖、一邊寫筆記,對研究人員來說等於做實驗的紙筆。其他語言沒這待遇。

REASON 06

Hugging Face、LangChain 的中心地位

大模型時代的新工具鏈,幾乎都以 Python 為主語言。生態繼續滾大,後進者已經追不上。

05 / 深入看

三個讓 AI 圈離不開 Python 的理由

前面講了六個原因,但其中三個是真正讓 Python 在 AI 時代站穩腳跟的關鍵。 這三點互相牽動,缺一不可。

優勢 01

數學精度,贏在「不會偷偷出錯」

做 AI、做金融、做科學運算,最怕的就是數字算到一半「悄悄失準」。 Python 在整數運算和精確小數上,都比 JavaScript 強得多。

● PYTHON
# 整數想多大就多大,不會 overflow
>>> 2 ** 100
1267650600228229401496703205376

# 階乘 100!也沒問題
>>> import math
>>> math.factorial(100)
933262154439441526816992388... # 158 位數
● JAVASCRIPT
// Number 是 64-bit float,大整數會失精
> 2 ** 100
1.2676506002282294e+30  // ❌ 已經失準

// 必須換成 BigInt(後來才加的)
> 2n ** 100n
1267650600228229401496703205376n
// BigInt 還不能跟一般 Number 直接運算

浮點數計算:用 Decimal 就完美

0.1 + 0.2 ≠ 0.3 是 IEEE 754 浮點數的問題,Python 跟 JavaScript 都有。 但 Python 內建了 DecimalFraction 模組,可以做完全精確的運算。

● PYTHON · decimal & fractions
# 一般 float — 兩種語言都會踩雷
>>> 0.1 + 0.2
0.30000000000000004

# Python 解法 1:Decimal(精確小數)
>>> from decimal import Decimal
>>> Decimal("0.1") + Decimal("0.2")
Decimal('0.3')   # ✓ 完全精確,適合金融計算

# Python 解法 2:Fraction(分數運算)
>>> from fractions import Fraction
>>> Fraction(1, 3) + Fraction(1, 6)
Fraction(1, 2)   # ✓ 1/3 + 1/6 = 1/2,完美
▸ 為什麼 AI 在乎這個

訓練神經網路時,梯度可能小到 1e-8,模型權重又可能大到 1e+6。 如果語言的數值系統本身就不穩,訓練到一半就會「NaN 大爆發」。 Python 加上 NumPy 提供了完整的 float16 / float32 / float64 / bfloat16 控制, 這是 JavaScript 做不到的。

優勢 02

膠水語言:Python 在上,C/C++ 在下

Python 本身執行速度其實很慢,大概比 C++ 慢 50 倍以上。 那為什麼還能拿來訓練神經網路?因為真正吃效能的部分,根本不是 Python 在跑。 Python 只是一層「膠水」,把底層的 C/C++/CUDA 模組黏起來。

你寫的程式碼
Your Python Code
model.fit(X, y)
Python 套件介面
PyTorch / scikit-learn / NumPy
Python wrapper (.py)
底層運算核心
C / C++ / Fortran / CUDA
BLAS, LAPACK, cuDNN, ATen
硬體
CPU / GPU / NPU / TPU
真正在算數的東西

實際情況是這樣的:

你呼叫 numpy.dot(A, B) 做矩陣相乘 —— Python 只負責「轉達」這個請求。

真正的乘法是底下的 BLAS(Fortran/C 寫的)在跑, 速度跟你直接寫 C 幾乎一樣。

所以你用最舒服的 Python 寫法, 享受的是 C 的執行速度。 兩個世界的好處都拿到了。

優勢 03

開發速度 vs 執行速度的完美平衡

AI 研究最重要的是「快速實驗不同想法」。Python 雖然執行速度比 C++ 慢, 但開發速度快非常多。而且核心運算 heavy 的部分, 底層其實是用 C/C++ 實作的(NumPy、PyTorch 都是)。

真實情境比較 — 寫一個線性回歸

● PYTHON · scikit-learn
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)

# 4 行,跑完了。
● C++ (從頭寫)
// 自己實作矩陣運算
Matrix transpose(const Matrix& A) { ... }
Matrix multiply(const Matrix& A, const Matrix& B) { ... }
Matrix inverse(const Matrix& A) { ... }

// 自己實作梯度下降
void gradientDescent(...) {
  for (int i = 0; i < iterations; ++i) { ... }
}

// 還要實作資料前處理、loss function、...
// 上千行起跳
4
lines
PYTHON
1000+
lines
C++ FROM SCRATCH
▸ 重點

Python 讓你專注在「怎麼解決問題」,而不是「怎麼實作演算法」。 對 AI 研究員、資料科學家來說, 一天試 10 個想法 vs 一個月寫一份 C++ 程式,選哪個很明顯。

而且 — 別忘了 — sklearn 底下還是 C 在跑。 所以你獲得的是「4 行 Python 程式碼的開發體驗 + C 等級的執行速度」。

06 / 工具箱

AI 工程師日常用的 Python 套件

這些套件構成了 Python 在 AI 領域的完整生態。 按用途分成七大類,每個套件都標明「用在哪裡」。

A 數值運算基礎 / FOUNDATION
numpy
N 維陣列與向量化數值運算的標準
用在所有矩陣運算、深度學習張量、影像/訊號處理。是幾乎所有 AI 套件的共同基底,底層用 C / Fortran 實作。
pandas
表格資料處理的瑞士刀
用在讀寫 CSV / Excel / SQL、資料清理、欄位聚合、時間序列分析。資料科學的第一步幾乎都靠它。
scipy
科學運算工具集
用在統計檢定、最佳化求解、訊號處理(FFT、濾波)、稀疏矩陣、微分方程。比 NumPy 更高階。
B 經典機器學習 / CLASSIC ML
scikit-learn
經典 ML 演算法的標準庫
用在分類、回歸、分群、降維、交叉驗證。API 設計極佳,新手入門 ML 的首選,寫法 fit() / predict() 一致到讓人感動。
xgboost
梯度提升決策樹之王
用在表格資料預測比賽長期王者。信用評分、客戶流失預測、廣告點擊率,業界 ML 的主力之一。
C 深度學習框架 / DEEP LEARNING
pytorch
Meta 出品,深度學習研究界主流
用在撰寫和訓練神經網路、LLM、視覺模型。動態運算圖讓 debug 像寫一般 Python 程式一樣自然,論文八成都用它。
tensorflow
Google 出品,工業部署常用
用在大規模模型訓練、工業界 production 部署。TFLite 是 Mobile / Edge 部署的主流選擇。
keras
最高階的神經網路 API
用在快速搭建 CNN / RNN / Transformer 等模型。內建在 TensorFlow,3 行就能定義一個模型,適合教學。
D 大語言模型 / LLM & NLP
transformers
Hugging Face 預訓練模型庫
用在下載與微調 BERT、Llama、GPT、Gemma 等模型。from_pretrained() 一行就能用最新模型,LLM 時代的軍火庫。
langchain
LLM 應用組裝框架
用在串接 LLM 與外部資料、工具、向量資料庫,做 RAG、Agent、Chatbot 等應用。生態極大但較複雜。
openai
OpenAI 官方 API SDK
用在呼叫 GPT 系列模型、Whisper 語音轉文字、DALL·E 圖像生成、Embeddings。
anthropic
Anthropic 官方 API SDK
用在呼叫 Claude 系列模型(Opus / Sonnet / Haiku),長 context 推理、程式碼分析任務的常用選擇。
E 電腦視覺 / COMPUTER VISION
opencv-python
影像 / 視訊處理的工業標準
用在讀寫影片、邊緣偵測、特徵抽取、相機標定、影像增強。CV 工程師的瑞士刀,QCS6490 等邊緣裝置上很常見。
pillow (PIL)
Python 影像處理基底
用在讀寫各種圖片格式、裁切、縮放、色彩轉換。輕量級,適合做資料前處理。
ultralytics
YOLO 物件偵測官方套件
用在即時物件偵測、人體姿態(YOLO-Pose)、影像分割(YOLO-Seg)。3 行程式碼就能跑起來,邊緣 AI 的主力。
mediapipe
Google 的視覺解算管線
用在人體姿態、手勢辨識、臉部關鍵點。輕量、即時、跨平台,Mobile / Edge 友善。
F 資料視覺化 / VISUALIZATION
matplotlib
Python 繪圖的祖師爺
用在折線、散布、長條、熱力圖、3D 圖。論文圖表幾乎都用它畫,API 老但功能完整。
seaborn
統計繪圖的美學包裝
用在建立在 matplotlib 之上,做美觀的分佈圖、相關性熱圖、Pair Plot。資料探索階段的好幫手。
plotly
互動式網頁圖表
用在需要滑鼠 hover、縮放、拖曳的圖表,儀表板、研究報告。輸出 HTML 直接嵌入網頁。
G 部署與開發工具 / DEPLOYMENT & TOOLS
jupyter
互動式筆記本
用在邊寫程式、邊看結果、邊寫筆記。資料科學家的「實驗紙筆」,Notebook (.ipynb) 是分享分析結果的標準格式。
fastapi
現代化 Web API 框架
用在把訓練好的模型包成 REST API 提供推論服務。自動產生 OpenAPI 文件,效能接近 Node.js。
onnxruntime
跨平台模型推論引擎
用在把 PyTorch / TF 模型轉成 ONNX 後跨硬體部署。支援 CPU / GPU / NPU(QCS6490 等)的 Edge 推論最常用。
streamlit
幾行程式碼變網頁應用
用在把模型快速包成可互動的網頁 demo。不需要懂 HTML / CSS,內部演示、客戶 POC 神器。
▸ 怎麼開始

新手建議路線: 先學 numpy + pandas + matplotlib 處理資料, 然後 scikit-learn 入門 ML, 接著 pytorch 進入深度學習, 最後 transformers / langchain 玩 LLM。

安裝統一用 pip install 套件名, 或在 conda 環境裡用 conda install

07 / 實戰對比

同樣是讀檔、算平均

Python 的資料處理寫起來幾乎像在說話。這就是為什麼 AI / 資料科學的人捨不得換語言。

● PYTHON + pandas
import pandas as pd

df = pd.read_csv("sales.csv")
avg = df["revenue"].mean()
print(f"平均營收:{avg:.2f}")
● JAVASCRIPT (Node.js)
const fs = require("fs");
const rows = fs.readFileSync("sales.csv", "utf8")
  .split("\n").slice(1)
  .map(r => parseFloat(r.split(",")[2]))
  .filter(n => !isNaN(n));
const avg = rows.reduce((a,b) => a+b) / rows.length;
console.log(`平均營收:${avg.toFixed(2)}`);
▸ 觀察

Python 只要 4 行,而且讀起來像「打開 CSV → 取 revenue 欄 → 算平均」。 JavaScript 要自己處理字串切割、parseFloat、過濾無效值。 差別不在語言能力,而在生態系成熟度。

08 / 新手地雷

最常見的 Python 錯誤

縮排是 Python 的優點,也是初學者最容易翻車的地方。以下是 5 個經典錯誤,請務必認識它們。

錯誤 01

IndentationError:忘了縮排

def greet(name):
print("Hi, " + name)  # ❌ 沒縮排!
錯誤訊息: IndentationError: expected an indented block
函式 / if / for / while 後面的程式碼必須縮排(通常是 4 個空格),否則 Python 不知道哪些屬於這個區塊。
正確 ✓

記得縮排 4 個空格

def greet(name):
    print("Hi, " + name)  # ✓
錯誤 02

TabError:Tab 和空格混用

def calc(x):
    if x > 0:
print("正數")    # ❌ 上面用空格,這行用 Tab
    else:
        print("非正數")
錯誤訊息: TabError: inconsistent use of tabs and spaces in indentation
看起來對齊,但實際上 Python 嚴格區分 Tab 和空格。 規則:整份檔案統一用 4 個空格,VS Code 可以設定自動把 Tab 轉成空格。
錯誤 03

縮排層級不一致

def check(score):
    if score >= 60:
        print("及格")
      print("恭喜")  # ❌ 縮排 6 格,跟上面 8 格不同
錯誤訊息: IndentationError: unindent does not match any outer indentation level
Python 用縮排來判斷「這行屬於哪個區塊」,所以同一個區塊裡的每一行都要縮排一樣多
錯誤 04

SyntaxError:if / for / def 後面忘了冒號

if score >= 60  # ❌ 漏掉冒號
    print("及格")
錯誤訊息: SyntaxError: expected ':'
Python 的區塊開頭(ifforwhiledefclasselse) 結尾都要加冒號 :。這跟 JavaScript 的 if () { } 不一樣,JS 沒有冒號。
錯誤 05

= 和 == 搞混

if score = 100:  # ❌ 賦值,不是比較
    print("滿分")
錯誤訊息: SyntaxError: invalid syntax
= 是「把 100 放進 score」,== 才是「比較 score 是不是等於 100」。 JavaScript 還有 ===(嚴格相等),Python 只用 == 就夠了。
錯誤 06

List 用了 { } 而不是 [ ]

names = {"Akira", "Yuki", "Hiro"}  # ❌ 這變成 set,不是 list
print(names[0])  # TypeError: 'set' object is not subscriptable
陷阱:JavaScript 的物件用 { },但 Python 的 { }set 或 dict。 要做有順序的清單(List),要用 [ ]。記住:
[ ] → List(有順序) · { } → Set / Dict(無順序 / 鍵值對) · ( ) → Tuple(不可變)
▸ 給初學者

這些錯誤幾乎每個 Python 學習者都犯過。 建議使用 VS Code + Pylance 擴充套件,它會在你打錯字的當下就標紅線,而且 把 Tab 設成自動轉 4 空格,可以避免 80% 的縮排錯誤。

09 / 開始你的旅程

Python 不只是語法,
思考方式

Python 的設計哲學寫在它自己的彩蛋裡:打開 Python,輸入 import this, 會看到「The Zen of Python」 — Python 之禪。

>>> import this

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Readability counts.

— Tim Peters, The Zen of Python