變數宣告與命名規則 (Variables Declaration & Naming Rules)
簡介
在程式語言的世界裡,變數是與程式互動的第一個入口。不論是寫簡單的「Hello, World」還是建構大型的資料分析平台,變數都是儲存與傳遞資訊的橋樑。對於 Python 初學者來說,正確地宣告變數、遵守命名慣例,不僅能讓程式碼更易讀,也能避免許多潛在的錯誤與除錯成本。
本篇將從 變數的基本概念、合法的命名規則、常見的命名風格,逐步說明如何在 Python 中安全、有效地使用變數。文章中穿插實作範例,讓你在閱讀完後即可在自己的程式中直接套用。
核心概念
1. 什麼是變數?
變數本質上是 一個指向記憶體位置的名稱,它可以暫時保存程式執行過程中產生的資料。Python 為動態型別語言,宣告變數時不需要事先指定資料型別,系統會在賦值時自動推斷。
# 直接賦值即完成宣告
age = 25 # 整數
name = "Alice" # 字串
price = 3.99 # 浮點數
is_active = True # 布林值
重點:在 Python 中,變數的「宣告」與「賦值」是一體的動作,沒有單獨的
int a;之類的語法。
2. 合法的變數名稱
變數名稱必須遵守以下規則:
| 規則 | 說明 |
|---|---|
| 只能使用 英文字母、數字 以及 底線(_) | 例如 score, total_2, _temp |
| 不能以數字開頭 | 1st 是非法的,first1 合法 |
| 大小寫敏感 | Score 與 score 被視為不同變數 |
不能使用 Python 保留字(如 if, for, class 等) |
會導致語法錯誤 |
valid_name = 10 # ✅ 合法
_valid = "start" # ✅ 合法,常用於「私有」變數的慣例
user2 = "Bob" # ✅ 合法
2nd_user = "Charlie" # ❌ 以數字開頭,會拋出 SyntaxError
class = "Math" # ❌ 使用保留字,會拋出 SyntaxError
3. 命名風格與最佳實踐
| 風格 | 說明 | 範例 |
|---|---|---|
| snake_case(底線小寫) | Python 官方 PEP 8 推薦,用於變數、函式名稱 | total_score, user_name |
| UPPER_SNAKE_CASE(全大寫底線) | 常用於常數(不會變動的值) | MAX_RETRY = 5 |
| CamelCase(大寫駝峰) | 多用於類別(Class)名稱 | StudentRecord |
| 單一字母 | 僅在迴圈或臨時變數中使用,保持簡潔 | i, j, x |
建議:在專案中統一使用
snake_case命名變數,讓程式碼風格一致,降低閱讀門檻。
4. 程式碼範例
範例 1:基本變數宣告與類型檢查
# 宣告變數
first_name = "Tom"
age = 30
height = 1.78
is_student = False
# 使用 type() 查看資料型別
print(type(first_name)) # <class 'str'>
print(type(age)) # <class 'int'>
print(type(height)) # <class 'float'>
print(type(is_student)) # <class 'bool'>
範例 2:遵守命名規則的實務寫法
# 正確的變數命名
max_retry = 3 # 常數使用全大寫
user_id = 1024
total_price = 199.99
_is_valid = True # 以底線開頭表示「私有」變數
# 錯誤示範(會產生 SyntaxError)
# 2nd_attempt = 5
# for = "loop"
範例 3:變數重新指派與型別改變
value = 10 # 先是整數
print(value, type(value))
value = "十" # 改成字串
print(value, type(value))
value = [1, 2, 3] # 再改成列表
print(value, type(value))
範例 4:使用常數與環境設定
# 定義常數(不會在程式執行期間被改變)
PI = 3.1415926535
MAX_USERS = 1000
# 透過常數計算圓面積
radius = 5
area = PI * radius ** 2
print(f"圓面積 = {area:.2f}")
# 若需要修改設定,建議使用設定檔或環境變數,而非直接改變常數
範例 5:變數命名的可讀性提升
# 差的寫法
a = 1000
b = 0.85
c = a * b
# 好的寫法
principal = 1000 # 本金
interest_rate = 0.85 # 利率(%)
interest_amount = principal * interest_rate
print(f"利息金額 = {interest_amount}")
常見陷阱與最佳實踐
| 常見陷阱 | 說明 | 解決方式 |
|---|---|---|
| 使用保留字 | 例如 list = [1,2] 會遮蔽內建函式 list() |
避免使用保留字,可在 IDE 中開啟語法檢查 |
| 變數命名過於簡短 | x, y 在大型程式中難以追蹤 |
使用具意義的名稱,如 user_age、total_amount |
| 混用大小寫 | UserName vs username 造成混淆 |
統一使用 snake_case |
| 變數被意外覆寫 | 例如 max = 10 會覆寫內建 max() |
使用前先檢查是否與內建名稱衝突 |
| 在全域與區域混用 | 未使用 global 宣告時,區域變數會遮蔽全域變數 |
明確使用 global 或將資料封裝於函式參數/回傳值 |
最佳實踐
- 先思考再命名:在寫程式前先規劃變數的意義與範圍。
- 遵循 PEP 8:使用
snake_case、適度加底線分隔單字。 - 避免硬編碼:將「魔術數字」抽成常數,提升可維護性。
- 使用 IDE Linter:如
flake8、pylint能即時偵測命名問題。 - 寫註解:對於特殊用途的變數,加上簡短說明(如
# 暫存 API 回傳的 token)。
實際應用場景
資料前處理
在 Pandas 讀取 CSV 後,常會為每個欄位建立變數,例如customer_id,order_date,使用有意義的名稱讓後續的過濾、聚合操作更直觀。Web API 開發
Flask 或 FastAPI 中,路由參數會自動映射為變數,如def get_user(user_id: int):,若命名不清晰,文件與除錯都會變得困難。機器學習模型
訓練過程中會產生超參數(learning_rate、batch_size),把它們寫成常數或配置物件,方便在不同實驗間切換。自動化腳本
若寫一個批次檔案搬移工具,使用source_dir,target_dir作為變數,可讓使用者一眼看出腳本的目的。
總結
變數是程式的「記憶體名片」,正確宣告與合適命名 能讓程式碼更易讀、易維護,也能減少除錯時間。本文重點回顧如下:
- 變數在 Python 中是 賦值即宣告,不需事先指定型別。
- 合法名稱只能包含英文字母、數字與底線,且不能以數字開頭,亦不可使用保留字。
- snake_case 為官方推薦的變數命名風格;全大寫底線則用於常數。
- 常見陷阱包括保留字衝突、過度簡短或不一致的大小寫,使用 Linter 能有效避免。
- 在資料前處理、Web API、機器學習、腳本自動化等實務場景中,良好的變數命名是提升開發效率的關鍵。
只要在寫程式的每一步都保持 「語意清晰」 與 「風格一致」,即使是大型專案也能保持可讀性與可維護性。祝你在 Python 的旅程中,寫出既簡潔又強大的程式碼!