本文 AI 產出,尚未審核

Python 基礎概念(Fundamentals)

主題:Python 是什麼、歷史與版本差異


簡介

Python 是一門高階、直譯式、通用的程式語言,設計哲學強調「可讀性」與「簡潔」;對於剛踏入程式世界的學習者,以及需要快速開發原型的專業開發者,都相當友善。
在資料科學、人工智慧、網路爬蟲、網站後端、系統自動化等領域,Python 已成為事實上的標準工具。了解它的起源、演變與各主要版本的差異,能幫助我們在選擇環境、閱讀舊有程式碼或升級專案時,作出更明確的判斷。


核心概念

1️⃣ Python 是什麼?

  • 直譯式:程式碼在執行時由 Python 直譯器逐行解釋,無需事先編譯成機器碼。
  • 動態型別:變數不需要事先宣告類型,執行時由直譯器自動推斷。
  • 跨平台:同一份 .py 檔可在 Windows、macOS、Linux 上執行,只要安裝相容的 Python 直譯器。
  • 豐富的標準函式庫stdlib)以及活躍的第三方套件生態系(如 numpypandasdjango),讓開發者能「少寫程式,多用套件」。

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.93.103.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 名稱不同、功能較舊 大幅改寫、加入新模組(如 pathlibasyncio

實務建議:若必須維護舊有 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 = []
過度依賴全域變數 會降低程式可測試性與維護性。 模組化:將功能封裝在函式或類別中,盡量使用參數傳遞。

實際應用場景

  1. 資料分析與機器學習
    • 使用 pandas 處理 CSV、Excel;numpy 進行向量化運算;scikit-learntensorflow 建立模型。
  2. 網站後端開發
    • DjangoFlask 提供快速建置 RESTful API 或完整的 MVC 網站。
  3. 自動化腳本與 DevOps
    • subprocessshutilpathlib 撰寫系統管理腳本;結合 DockerAnsible 完成部署自動化。
  4. 網路爬蟲
    • requests 取得網頁,BeautifulSouplxml 解析 HTML;scrapy 進行大型爬取與資料儲存。
  5. 教育與科研
    • Python 的簡潔語法讓學生能更快掌握演算法概念,同時在科研中可快速驗證實驗結果。

總結

  • Python 以其易讀、跨平台與豐富套件生態,成為現代軟體開發的主流語言。
  • 1991 年的初版3.x 系列,語法與標準函式庫持續優化,特別是 Python 3 帶來的 Unicode 全面支援與新語法(如 f-string、型別提示),大幅提升開發效率與程式品質。
  • 了解 版本差異、避免常見陷阱、遵循 最佳實踐,能讓我們在 資料科學、Web、自動化 等各種場景中,快速、穩定地交付可維護的程式。

一句話總結:掌握 Python 的歷史與版本演進,等於擁有了選擇正確工具與未來升級路徑的鑰匙。祝你在 Python 的世界裡玩得開心、寫得順手!