Python 入門指南 - 運算式與陳述

運算式 (expression) 由運算元 (operand) 與運算子 (operator) 所組成




單一運算元就構成一個運算式,運算元可以是變數 (variable) 、字面常數 (literal) 或呼叫函數 (function) ,例如
a       # 以變數當運算元
3       # 以字面常數當運算元
print() # 呼叫函數


運算式,顧名思義,其為運算出一個結果的式子,因此單一運算元的運算式所得到的結果就是運算元的值,如果是函數呼叫,就是函數的回傳值 (return value) 囉!


單一運算元也可以結合單元運算子,單元運算子有
運算子功能範例
++a
--a


正負如同一般數學表示正負值一樣,同樣的,負負會得正
a = -3
b = +a # b 會等於 -3
c = -a # c 會等於 3


一般運算子都須結合兩個運算元,像是關鍵字 (keyword) 中有邏輯運算子 (logical operator)
運算子功能範例
anda and b
ora or b
notnot a


not 也是單元運算子, andor 則需要兩個運算元
a = True
b = False 
c = a and b # c 會等於 False
d = a or b  # d 會等於 True
e = not b   # e 會等於 True


算術運算子 (arithmetic operator) 可用在整數 (integer) 及浮點數 (floating-point number) ,計算結果也為整數或浮點數
運算子功能範例
+a + b
-a - b
*a * b
/a / b
%取餘數a % b
**指數a ** b


例如
a = 2
b = a + 2  # b 會等於 4
c = b - 2  # c 會等於 2
d = c * 2  # d 會等於 4
e = d / 2  # e 會等於 2.0
f = e % 2  # f 會等於 0.0
g = f ** 2 # g 會等於 0.0


+ 與 * 也可用於字串 (string) ,例如
a = "a"
b = a + "b" # 字串連接, b 會等於 "ab"
c = a * 2   # 字串重複, c 會等於 "aa"


相等性及關係運算子 (equality and relational operator) 的結果得到布林值 (Boolean value) ,不是 True 就是 False
運算子功能範例
==相等a == b
!=不相等a != b
>大於a > b
>=大於等於a >= b
<小於a < b
<=小於等於a <= b


例如
a = 11
b = 22

c = a >= b # c 會等於 False
d = a <= b # d 會等於 True
e = c == d # e 會等於 False
f = a != b # f 會等於 True


我們運用的等號,其實屬於指派運算子 (assignment operator) ,所謂的指派是把等號右邊的值給左邊的變數
運算子功能範例
=指派a = b
+=相加同時指派a += b
-=相減同時指派a -= b
*=相乘同時指派a *= b
/=相除同時指派a /= b
%=取餘數同時指派a %= b
**=取指數同時指派a **= b


例如
a = 2
a += 2  # a 會等於 4
a -= 2  # a 會等於 2
a *= 2  # a 會等於 4
a /= 2  # a 會等於 2.0
a %= 2  # a 會等於 0.0
a **= 2 # a 會等於 0.0


也可以用平行指派 (parallel assignment)
a, b, c = 11, 22, 33 
# a 會等於 11
# b 會等於 22
# c 會等於 33


有沒有看的眼花撩亂?居然有 f = a != b 之類的式子出來,這是因為運算子有計算的優先次序 (precedence) ,由於 != 的優先順序在 = 之前,所以 a != b 會先被計算,結果才會指派到 f 之中。如果不是很清楚各個運算子的優先次序,保險一點的做法可以用小括弧,先把要先被計算的運算式圍起來,例如
f = (a != b) # 等於 f = a != b


這是因為小括弧有最高的優先計算次序。


基本上運算式就是程式 (program) 中獨立的陳述 (statement) ,通常一行程式碼只會放一個陳述。 Python 程式的執行單位就是陳述,由前而後,一個陳述接著一個陳述來執行。


然而許多控制結構 (control structure) 是屬於多行的複合陳述 (compound statement) ,我們先來看看控制結構中的選擇吧!


中英文術語對照
運算式expression
運算元operand
運算子operator
變數variable
字面常數literal
函數function
回傳值return value
算術運算子arithmetic operator
整數integer
浮點數floating-point number
關鍵字keyword
邏輯運算子logical operator
字串string
相等性及關係運算子equality and relational operator
布林值Boolean value
指派運算子assignment operator
平行指派parallel assignment
優先次序precedence
程式program
陳述statement
控制結構control structure
複合陳述compound statement


您可以繼續參考
基礎篇


相關目錄
回 Python 入門指南
回 Python 教材
回首頁


參考資料
http://docs.python.org/3.1/reference/lexical_analysis.html#operators
http://docs.python.org/3.1/reference/expressions.html
http://docs.python.org/3.1/tutorial/introduction.html

3 則留言:

Unknown 提到...

指派運算子
a -= 2 # a 會等於 2

a是不是應該等於0?
有點困惑
謝謝

Kaiching Chang 提到...

a = 2
# 變數a設定為整數2
a += 2 # a 會等於 4
# 變數a加上2,結果a會等於4
a -= 2 # a 會等於 2
# 上一行的變數a已經是4,減2變成2

放在一起的程式碼表示從上而下
一行接著一行執行的唷

^_^

Unknown 提到...

原來是這樣
太感謝你了