本文 AI 產出,尚未審核
Python 基礎概念(Fundamentals)
主題:Python 是什麼、歷史與版本差異
簡介
Python 是一門高階、直譯式、通用的程式語言,設計哲學強調「可讀性」與「簡潔」;對於剛踏入程式世界的學習者,以及需要快速開發原型的專業開發者,都相當友善。
在資料科學、人工智慧、網路爬蟲、網站後端、系統自動化等領域,Python 已成為事實上的標準工具。了解它的起源、演變與各主要版本的差異,能幫助我們在選擇環境、閱讀舊有程式碼或升級專案時,作出更明確的判斷。
核心概念
1️⃣ Python 是什麼?
- 直譯式:程式碼在執行時由 Python 直譯器逐行解釋,無需事先編譯成機器碼。
- 動態型別:變數不需要事先宣告類型,執行時由直譯器自動推斷。
- 跨平台:同一份 .py 檔可在 Windows、macOS、Linux 上執行,只要安裝相容的 Python 直譯器。
- 豐富的標準函式庫(
stdlib)以及活躍的第三方套件生態系(如numpy、pandas、django),讓開發者能「少寫程式,多用套件」。
2️⃣ 歷史沿革
| 時間 | 里程碑 | 重要說明 |
|---|---|---|
| 1989 | Guido van Rossum 在荷蘭阿姆斯特丹開始設計 Python | 受 ABC 語言啟發,追求簡潔與可讀性 |
| 1991 | 第一版 Python 0.9.0 發佈 | 包含例外處理、函式、模組系統 |
| 1994 | Python 1.0 正式發布 | 引入模組、例外、lambda 表達式 |
| 2000 | Python 2.0 發布 | 加入垃圾回收、list comprehensions、Unicode 支援 |
| 2008 | Python 3.0(又稱 Python 3000)發布 | 徹底重構語法,移除舊有不一致之處 |
| 2020 | Python 3.9、3.10、3.11 持續迭代 | 引入型別提示、結構化模式匹配、效能大幅提升 |
重點:Python 2 系列已於 2020 年正式停止支援(EOL),新專案建議直接使用 Python 3.x。
3️⃣ 版本差異:Python 2 vs Python 3
| 差異項目 | Python 2 | Python 3 |
|---|---|---|
print 語句 |
print "Hello"(語句) |
print("Hello")(函式) |
| 整數除法 | 5 / 2 == 2(捨去小數) |
5 / 2 == 2.5(保留小數) |
| Unicode | str 為位元組序列,unicode 為文字 |
str 為 Unicode,bytes 為位元組 |
xrange / range |
xrange 產生惰性序列,range 產生清單 |
range 直接產生惰性序列(等同於 xrange) |
input |
raw_input(字串)+ input(評估) |
input 直接回傳字串,eval(input()) 才會評估 |
| 標準函式庫 | 部分 API 名稱不同、功能較舊 | 大幅改寫、加入新模組(如 pathlib、asyncio) |
實務建議:若必須維護舊有 Python 2 程式,使用
2to3工具自動轉換語法;若是全新開發,務必選擇 Python 3.9+,才能享受最新語法與效能優化。
4️⃣ 程式碼範例
以下示範 Python 3 的常見語法,均附上說明註解,方便初學者快速上手。
# 1️⃣ Hello World – 最簡單的輸出
print("Hello, Python!") # print 是函式,必須加上括號
# 2️⃣ List Comprehension – 用一行建立列表
squares = [x**2 for x in range(1, 6)] # 產生 1~5 的平方數
print(squares) # 輸出: [1, 4, 9, 16, 25]
# 3️⃣ 函式預設參數與可變參數
def greet(name: str, greeting: str = "哈囉"):
"""傳回一段問候語"""
return f"{greeting}, {name}!"
print(greet("小明")) # 預設 greeting 為「哈囉」
print(greet("小明", "早安")) # 自訂 greeting
# 4️⃣ f-string – Python 3.6+ 的字串插值
year = 2025
msg = f"現在是 {year} 年,我正在學習 Python。"
print(msg)
# 5️⃣ 簡易類別(Class)與屬性封裝
class Counter:
def __init__(self, start: int = 0):
self.value = start
def inc(self, step: int = 1):
self.value += step
return self.value
c = Counter(10)
print(c.inc()) # 11
print(c.inc(5)) # 16
常見陷阱與最佳實踐
| 陷阱 | 說明 | 最佳做法 |
|---|---|---|
混用 print 語句 |
在 Python 2 與 3 共存的環境下,忘記加括號會拋出 SyntaxError。 |
統一使用 Python 3,或在檔頭加入 from __future__ import print_function。 |
| 除法結果非預期 | Python 2 中 5/2 會得到 2,可能導致資料錯誤。 |
明確使用 //(整除)或 float();在 Python 3 中直接使用 / 即可得到浮點數。 |
| Unicode 編碼錯誤 | 讀寫檔案時未指定編碼,中文會出現 UnicodeDecodeError。 |
使用 open(path, encoding="utf-8"),或在程式最上方加 # -*- coding: utf-8 -*-。 |
| 可變預設參數 | def foo(lst=[]) 會在多次呼叫間共享同一個列表。 |
使用 None 作為預設值,然後在函式內部建立新列表:if lst is None: lst = []。 |
| 過度依賴全域變數 | 會降低程式可測試性與維護性。 | 模組化:將功能封裝在函式或類別中,盡量使用參數傳遞。 |
實際應用場景
- 資料分析與機器學習
- 使用
pandas處理 CSV、Excel;numpy進行向量化運算;scikit-learn、tensorflow建立模型。
- 使用
- 網站後端開發
Django、Flask提供快速建置 RESTful API 或完整的 MVC 網站。
- 自動化腳本與 DevOps
- 用
subprocess、shutil、pathlib撰寫系統管理腳本;結合Docker、Ansible完成部署自動化。
- 用
- 網路爬蟲
requests取得網頁,BeautifulSoup或lxml解析 HTML;scrapy進行大型爬取與資料儲存。
- 教育與科研
- Python 的簡潔語法讓學生能更快掌握演算法概念,同時在科研中可快速驗證實驗結果。
總結
- Python 以其易讀、跨平台與豐富套件生態,成為現代軟體開發的主流語言。
- 從 1991 年的初版 到 3.x 系列,語法與標準函式庫持續優化,特別是 Python 3 帶來的 Unicode 全面支援與新語法(如 f-string、型別提示),大幅提升開發效率與程式品質。
- 了解 版本差異、避免常見陷阱、遵循 最佳實踐,能讓我們在 資料科學、Web、自動化 等各種場景中,快速、穩定地交付可維護的程式。
一句話總結:掌握 Python 的歷史與版本演進,等於擁有了選擇正確工具與未來升級路徑的鑰匙。祝你在 Python 的世界裡玩得開心、寫得順手!