- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
Python 中的表達式(Expressions)
在 Python 中,表達式是代碼中可以被求值(計算)為一個值的任何部分。表達式可以包含變數、操作符、函數調用等,並最終產生一個值。
基礎表達式類型
1. 算術表達式
python
# 基本算術運算 5 + 3 # 加法,結果:8 10 - 4 # 減法,結果:6 7 * 2 # 乘法,結果:14 15 / 3 # 除法,結果:5.0 20 // 6 # 整數除法,結果:3 9 % 2 # 取餘數,結果:1 2 ** 3 # 指數,結果:8 # 複合表達式 (5 + 3) * 2 # 使用括號改變優先級,結果:16
2. 比較表達式
python
# 比較操作符 a == b # 等於 a != b # 不等於 a < b # 小於 a > b # 大於 a <= b # 小於等於 a >= b # 大於等於 # 範例 10 > 5 # True 3 == 3.0 # True 4 != 4 # False
3. 邏輯表達式
python
# 布林運算 True and False # 邏輯且,結果:False True or False # 邏輯或,結果:True not True # 邏輯非,結果:False # 複雜邏輯表達式 (age > 18) and (has_license) # 兩個條件都為真時為真 (score > 90) or (attendance > 0.8) # 任一個條件為真時為真
4. 賦值表達式(Python 3.8+)
python
# 海象運算符 := # 在表達式中進行賦值 if (n := len(items)) > 10: print(f"項目數量過多:{n}") # 傳統寫法需要兩行 n = len(items) if n > 10: print(f"項目數量過多:{n}")
表達式的特性
優先級順序
Python 表達式的求值遵循特定的優先級順序:
python
# 優先級從高到低: # 1. 括號 () # 2. 指數 ** # 3. 一元操作符 +x, -x # 4. 乘除 *, /, //, % # 5. 加減 +, - # 6. 比較操作符 # 7. 邏輯 not # 8. 邏輯 and # 9. 邏輯 or 2 + 3 * 4 # 結果:14 (先乘後加) (2 + 3) * 4 # 結果:20 (括號優先)
鏈式比較
Python 支持鏈式比較表達式:
python
# 傳統寫法 x = 5 if x > 3 and x < 10: print("x 在 3 和 10 之間") # Python 鏈式比較 if 3 < x < 10: print("x 在 3 和 10 之間") # 支持多個比較 if 1 < x < 5 < y < 10: print("鏈式比較")
條件表達式(三元運算符)
python
# 語法:value_if_true if condition else value_if_false age = 20 status = "成年人" if age >= 18 else "未成年人" # 等效於傳統 if-else if age >= 18: status = "成年人" else: status = "未成年人"
進階表達式類型
5. 序列操作表達式
python
# 字符串連接 "Hello" + " " + "World" # 結果:"Hello World" # 列表組合 [1, 2] + [3, 4] # 結果:[1, 2, 3, 4] # 重複運算符 "Python" * 3 # 結果:"PythonPythonPython" [0] * 5 # 結果:[0, 0, 0, 0, 0] # 成員測試 "Py" in "Python" # True 3 in [1, 2, 3] # True "key" in {"key": "value"} # True
6. Lambda 表達式
python
# 匿名函數表達式 add = lambda x, y: x + y add(5, 3) # 結果:8 # 常用於高階函數 numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, numbers)) # 結果:[1, 4, 9, 16, 25]
7. 生成器表達式
python
# 產生迭代器而不創建完整列表 squares = (x**2 for x in range(10)) sum(squares) # 結果:285 # 與列表推導式的區別 list_comp = [x**2 for x in range(10)] # 立即創建完整列表 gen_expr = (x**2 for x in range(10)) # 按需產生元素
8. 切片表達式
python
text = "Python Programming" text[0:6] # 結果:"Python" text[7:] # 結果:"Programming" text[::2] # 步長為2:"Pto rgramig" text[::-1] # 反轉:"gnimmargorP nohtyP"
表達式 vs 語句
理解表達式與語句的區別很重要:
| 特徵 | 表達式 (Expression) | 語句 (Statement) |
|---|---|---|
| 返回值 | 總是返回一個值 | 不返回值 (None) |
| 能否賦值 | 可以 | 不能 |
| 範例 | x + 5, func(), a and b | if, for, def, import |
python
# 表達式可以作為賦值的一部分 result = 5 + 3 * 2 # 這是表達式 # if 是語句,不能賦值給變數 # 錯誤:x = if True: 5 else: 3 # 但條件表達式(三元運算符)是表達式,可以賦值 x = 5 if True else 3 # 正確,這是表達式
實際應用範例
python
# 複雜表達式範例 def calculate_discount(price, is_member=False, has_coupon=False): # 使用多重條件表達式 discount = 0.2 if is_member else 0.1 if has_coupon else 0 # 計算最終價格 final_price = price * (1 - discount) # 確保價格不為負數 return max(final_price, 0) # 使用表達式進行資料處理 data = [10, 25, 30, 45, 50] # 過濾並轉換數據 filtered = [ x * 1.1 # 增加10% for x in data if x > 20 # 只取大於20的值 ] # 結果:[27.5, 33.0, 49.5, 55.0]
最佳實踐建議
保持表達式簡單:避免過於複雜的表達式
使用括號提升可讀性:即使優先級正確,括號也能讓意圖更清晰
適當使用表達式:在簡單情況下使用條件表達式,複雜邏輯仍用 if 語句
避免副作用:表達式應盡量無副作用,使代碼更可預測
Python 表達式的靈活性是其強大功能之一,正確使用可以使代碼更簡潔、更優雅。
留言
張貼留言