![](../../img/interpret.jpg)
Python 簡易手冊
單元 14 - 指派陳述與指派運算式
指派運算子 (assignment operator) 為單一個等號 = ,主要用途是將等號右邊的數值 (value) 指派給等號左邊的變數 (variable) ,等號也可以跟算術運算子 (arithmetic operator) 連在一起用,如下表
種類 | 運算子 |
---|---|
指派 | = |
指派同時相加 | += |
指派同時相減 | -= |
指派同時相乘 | *= |
指派同時相除 | /= |
指派同時相除取整數 | //= |
指派同時取指數 | **= |
指派同時做矩陣乘法 | @= |
@= 是做矩陣乘法並且同時指派的運算子,但是並沒有內建資料型態 (built-in data type) 可以運用 @= 運算子。
算術運算子在單元 12 - 算術運算子介紹。
舉簡單例子如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 進行指派及算術運算 a = 22 a += 3 a -= 4 a *= 5 a /= 6 a **= 7 # 印出變數 a print(a) # 檔名: assign_demo.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
此例變數 a 先被指派為整數 22 ,接下來利用指派連同算術運算子一同計算,最後印出變數 a ,執行結果如下
> python assign_demo.py |
502650756.8359375 |
> |
指派運算子也可以和位元運算子 (bitwise operator) 一起連用,單元 16 - 位元運算子會詳細介紹位元運算子。
如果要在其他運算式 (expression) 使用指派運算,需要在等號前面加上冒號,構成指派運算式 (assignment expression) ,形式如 := ,例如
1 2 3 4 5 6 7 8 9 10 11 | # 先指派變數 a 再做比較 print((a := 7) > 6) # 印出變數 a print(a) # 檔名: assign_demo2.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
第 2 行,同一個陳述 (statement) 中先指派整數 7 給變數 a ,然後變數再跟整數 6 進行比較
1 2 | # 先指派變數 a 再做比較 print((a := 7) > 6) |
比較運算子 (comparison operator) 在單元 13 - 比較運算子介紹。
此例執行結果如下
> python python3 assign_demo2.py |
True 7 |
> |
注意單一個等號 = 就是一個陳述,必須單獨成行,而 := 所形成的僅是運算式,不能單獨成行,所以是放在其他陳述中使用,例如以下放在 if 之後運算式的一部分
1 2 3 4 5 6 7 8 9 10 | # 先指派變數 a 再做比較 if (a := 7) > 6: # 印出變數 a print(a) # 檔名: assign_demo3.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
單元 20 - if 陳述會詳細介紹 if 陳述的用法。
簡單說就是把設定變數 a 放在 if 陳述那一行,此例執行結果如下
> python python3 assign_demo3.py |
7 |
> |
基本上指派運算式是一種簡化的語法糖,例如以下變數 i 在 while 迴圈 (loop) 的每一次都會重新指派
1 2 3 4 5 6 7 8 9 10 11 12 | # 從標準程式庫 random 引入 randint from random import randint # 在 i 小於 0 結束迴圈 while (i := randint(-1, 10)) > 0: print(i) # 檔名: assign_demo4.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
這個例子是控制變數 (control variable) i 每一次都取得 -1 到 10 之間的隨機整數,當 i 取得 -1 結束迴圈,執行結果如下
> python python3 assign_demo4.py |
7 7 6 1 10 |
> |
上例如果不用指派運算式,那進入 while 迴圈前就要先指派變數 i 一次,繼續在 while 結束前需要再重新指派變數 i 一次,就是至少寫兩行相同功能的程式碼,相對指派運算式只需要跟 while 陳述寫在一起。
單元 22 - while 陳述會詳細介紹 while 陳述的用法。
指派的時候也可以多個變數同在同一行一起指派,等號左邊的每個變數都以逗號區隔,等號右邊要有跟左邊相同數量的數值,同樣以逗號區隔,例如
1 2 3 4 5 6 7 8 9 10 11 | # 平行指派 a, b, c, d, e = 1, 2, 3, 4, 5 # 印出變數 c print(c) # 檔名: assign_demo5.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
此例印出變數 c ,執行結果如下
> python python3 assign_demo5.py |
3 |
> |
參考資料
- https://docs.python.org/3/reference/expressions.html#assignment-expressions
- https://docs.python.org/3/reference/simple_stmts.html#assignment-statements
![](../../img/pydoing.gif)