在 Python 中,變數賦值是將資料綁定到名稱的基本操作,使用 = 運算子完成指派。本文涵蓋變數命名規則、動態型別特性、多重賦值技巧,以及常見命名錯誤防呆,幫助你打穩 Python 程式設計的第一塊磚。
什麼是變數賦值?
變數賦值就像是在記憶體裡貼上一張標籤貼紙——你幫一筆資料取一個名字,之後只要呼叫這個名字,Python 就會幫你找到那筆資料。使用 = 號(指派運算子,不是數學上的「等於」)將右側的值綁定到左側的變數名稱。Python 採用動態型別,同一個變數可以在不同時間點指向不同型別的資料,非常靈活。
核心語法
# ── 範例 1:基本賦值 ──
name = "離火煉金坊" # 將字串指派給變數 name
age = 30 # 將整數指派給變數 age
price = 9.99 # 將浮點數指派給變數 price
print(name) # 輸出:離火煉金坊
print(age) # 輸出:30
print(price) # 輸出:9.99
# ── 範例 2:動態型別 & 重新賦值 ──
score = 100 # 目前是整數
print(type(score)) #
score = "滿分" # 重新指派為字串,Python 完全允許
print(type(score)) #
# ── 範例 3:多重賦值(同時指派多個變數)──
x, y, z = 1, 2, 3
print(x, y, z) # 輸出:1 2 3
# ── 範例 4:鏈式賦值(多個變數共享同一值)──
a = b = c = 0
print(a, b, c) # 輸出:0 0 0
# ── 範例 5:複合賦值運算子 ──
count = 10
count += 5 # 等同於 count = count + 5
print(count) # 輸出:15
Python 的
=是「指派」,不是「等於」。如果你想判斷兩個值是否相等,要使用==(雙等號)。初學者混淆這兩者是最常見的 bug 來源之一。
規則與注意事項
| 規則 | ✅ 正確範例 | ❌ 錯誤範例 |
|---|---|---|
只能用字母、數字、底線 _ |
user_name |
user-name(含連字號) |
| 不能以數字開頭 | score1 |
1score |
| 不能含空格 | my_dog |
my dog |
| 不能使用保留關鍵字 | my_list |
list、for、if |
| 慣例使用小寫 + 底線(snake_case) | item_price |
ItemPrice(類別名稱才用此形式) |
| 常數慣例全大寫 | MAX_SIZE = 100 |
maxsize = 100(語法不錯但不符慣例) |
常見錯誤與防呆
錯誤一:變數名稱拼錯導致 NameError
# ❌ 錯誤寫法(NameError: name 'usernmae' is not defined)
usernmae = "Alice"
print(usernmae) # 這行沒問題
print(username) # NameError!拼字錯誤
# ✅ 正確寫法
username = "Alice"
print(username) # 輸出:Alice
錯誤二:使用保留字當變數名稱
# ❌ 錯誤寫法(覆蓋內建函式,後續呼叫 list() 會出錯)
list = [1, 2, 3]
new = list("abc") # TypeError:'list' object is not callable
# ✅ 正確寫法
my_list = [1, 2, 3]
new = list("abc") # 正常運作,輸出 ['a', 'b', 'c']
錯誤三:混淆 = 與 ==
# ❌ 錯誤寫法(條件判斷中誤用單等號,在某些情境會導致 SyntaxError)
if x = 10: # SyntaxError: invalid syntax
print("ok")
# ✅ 正確寫法
if x == 10: # == 才是「比較是否相等」
print("ok")
進階用法
解包賦值(Unpacking Assignment)
# 從串列或 tuple 解包到多個變數
coordinates = (25.04, 121.56)
lat, lng = coordinates
print(lat) # 輸出:25.04
print(lng) # 輸出:121.56
# 搭配 * 號抓取剩餘元素
first, *rest = [10, 20, 30, 40]
print(first) # 輸出:10
print(rest) # 輸出:[20, 30, 40]
用 type() 檢查型別
# 動態型別下,隨時用 type() 確認目前型別
data = 42
print(type(data)) #
data = "四十二"
print(type(data)) #
data = 3.14
print(type(data)) #
交換兩個變數的值
# Python 獨特的優雅寫法:不需要暫存變數
a = 100
b = 200
a, b = b, a # 一行完成交換
print(a) # 輸出:200
print(b) # 輸出:100
🏮 煉金坊小叮嚀
我在剛學 Python 的時候,常常在大型腳本裡用 x、y、tmp 這種簡短名稱,結果三個月後回頭看完全看不懂自己在寫什麼。後來養成一個習慣:變數名稱要能自我說明,例如 candle_price 遠比 cp 清晰。Python 之禪說「可讀性很重要」,給未來的自己一個好名字,就是最划算的投資。
歡迎來到 Python 修煉的第一站!在程式的世界中,資料就像流沙,若不抓牢就會隨風逝去。本文將帶你掌握 Python 變數賦值 (Variable Assignment) 的核心技巧,這是所有開發者的基礎建材。我們將深入探討如何正確使用等號 = 將資料指派給變數、遵循 PEP 8 命名規範,以及理解 Python 特有的 動態型別 (Dynamic Typing) 魅力。
什麼是 變數賦值 (Variable Assignment)
在電腦記憶體這個大倉庫裡,變數並非用來裝東西的「盒子」,而是一張張貼在資料上的 「名牌標籤 (Name Tag)」。
當你執行賦值動作時,你並不是把數值塞進變數,而是拿起一張寫有名字的標籤,把它貼在特定的資料對象上。這意味著一個對象可以有多個標籤,而標籤也可以隨時撕下來,改貼到另一個對象身上。這種「標籤式」的管理方式,正是 Python 靈活處理數據的核心邏輯。
核心語法
在 Python 中,賦值的動作是由一個等號 = 來完成的。記住,這不是數學上的「等於」,而是「指派」。
# ── 範例一:基本的賦值操作 ──
user_level = 1 # 建立一個名為 user_level 的標籤,貼在數字 1 上
print(user_level) # 輸出:1
# ── 範例二:動態更新變數內容 ──
user_level = 5 # 撕下原本在 1 上的標籤,改貼到數字 5 上
print(user_level) # 輸出:5
# ── 範例三:變數間的指派 ──
current_score = 100
high_score = current_score # 讓 high_score 標籤也貼在 100 這個數字上
💡 賦值黃金律:Python 會先計算等號右側 (Right-hand side) 的運算式結果,最後才指派給左側 (Left-hand side) 的標籤名稱。
規則與注意事項
為了讓你的程式碼具備專業感且不報錯,命名標籤時必須遵守以下規範:
| 規範項目 | ✅ 正確範例 (Acceptable) | ❌ 錯誤範例 (Invalid) |
|---|---|---|
| 開頭限制 | player_1 |
1_player (不能以數字開頭) |
| 特殊符號 | user_age (僅允許底線) |
user-age 或 user$age |
| 關鍵字避讓 | my_print = 10 |
print = 10 (會覆蓋內建函式) |
| 命名風格 | total_amount (小寫蛇形) |
TotalAmount (通常用於類別) |
常見錯誤與防呆
剛開始練習時,最常遇到以下這幾種「標籤貼歪」的狀況:
1. 變數未定義先使用
# ❌ 錯誤:會觸發 NameError
# print(hero_name)
# ✅ 正確:必須先指派,才能呼叫
hero_name = "亞瑟"
print(hero_name)
2. 大小寫敏感陷阱
age = 25
# ❌ 錯誤:Python 極度區分大小寫
# print(Age) # 這會被視為另一個完全不同的標籤
進階用法
掌握了基礎後,這兩招能讓你的程式碼看起來更像老手(Pythonic):
1. 多重指派 (Multiple Assignment)
x, y, z = 10, 20, 30 # 一次搞定三個變數,適合初始化座標
2. 變數數值交換 (Variable Swapping)
a = "牛奶"
b = "咖啡"
a, b = b, a # 優雅對調:現在 a 是咖啡,b 是牛奶
🏮 離火煉金師小叮嚀
雖然 Python 的 動態型別 (Dynamic Typing) 讓你可以隨時變更資料型態,但這種便利其實是一把雙面刃。在大型專案中,過於隨意地更換標籤代表的資料型態,往往會導致難以追蹤的 Bug。
我的建議是:賦予變數一個「有語意」的名字(例如 retry_count 優於 n),並盡可能讓一張標籤在它的生命週期內只代表一種資料。這不僅是為了讓電腦看懂,更是為了讓三個月後的你也能看懂當時的邏輯。