|
OperatorExpressions
運算符號和表達式
簡介程式中的大部分語句 (邏輯行) 中都包含了表達式。 舉一個簡單的的語句為例子: i = 2 + 3 我們可以將這行語句分解為三部份 -- 左手邊的敘述,賦值運算符號(等號 '='),還有右手邊的敘述。 這個例子中,左手邊的敘述是一個變量 i。 因為我們將要取得一個數值,而只有變量才能儲存數值,所以在左手邊我們只有單一一個變量。 右手邊的敘述中包含了 '2 + 3' 這個表達式。 這個表達式本身也可以分解為三個部份 -- 第一個運算元 '2',運算符號 '+'(加法符號),第二個運算元 '3'。 運算符號(運算符)的功能是處理某些事,以諸如加法"+"等符號或其他特定關鍵自來表示。 運算符號需要一些資料來作運算,這些資料被稱為運算單元(運算元)。 運算符號我們將簡單瀏覽一下運算符號 (Operators)和它們的用法。 你可以使用周蟒的互動式直譯器來輸入這些範例,並馬上獲得運算的結果。 比如,要測試 '2 + 3' 這個表達式的結果,可以在互動式直譯器中輸入: >>> 2 + 3 5 馬上可以獲得運算結果 '5'。 表5.1 運算符與它們的用法
運算符號優先級如果你有一個如2 + 3 * 4那樣的表達式,是先做加法呢,還是先做乘法? 我們的中學數學告訴我們應當先做乘法——這意味著乘法運算符號的優先級高於加法運算符。 http://www.mathsisfun.com/operation-order-bodmas.html 下面的表格給出周蟒語言的運算符號優先級,從最低的優先級(最鬆散地結合)到最高的優先級(最緊密地結合)。 這意味著在一個表達式中,周蟒會優先計算列表中較下面的運算符,然後再計算列表上部的運算符。 下面這張列表與 Python 參考手冊中的那個列表一模一樣, 因為這張表已經顧及了完整的需要。 我建議妳使用括弧來將運算符號和運算元分組,以便能夠明確地指出運算的先後順序,也能避免運算式不夠清楚易讀。 例如,2 + (3 * 4)顯然比2 + 3 * 4清晰。當然括弧也應該適時地使用, 不要在運算式不需要括弧就能表示地很清楚時時濫用(比如 2 + (3 + 4))。 這個範例中的括弧是多餘的, 因為加法運算元(+)運算的順序是由左至右, 而這個運算式中明顯地 2 + 3 將優先開始運算,加上括弧並未改變運算結果。 表5.2 運算符優先級
其中我們還沒有接觸過的運算符號將在後面的章節中介紹。 在列表中列在同一行的運算符號都具有相同優先級。例如,+ 和 - 有相同的優先級。 計算順序一般來說, 運算符號優先級列表決定了哪些運算符號會在其他的運算符號之前被計算。 然而,如果你想要改變這些運算符號的計算順序,你得使用小括弧。 例如,在一個表達式'2 + 3 * 4'中,你想要先計算加法再計算乘法,那麼運算式就得寫成像'(2 + 3) * 4'這個樣子。 結合規律 (Associativity)運算符你結合的規律通常是由左向右,即具有相同優先級的運算符都會按照由左至右的順序來進行計算。 例如,2 + 3 + 4 會以(2 + 3) + 4的順序來進行計算。 也有一些像賦值運算符那樣的運算符是由右向左結合的,比如 a = b = c 的運算順序為 a = (b = c)。 表達式 (Expressions)讓我們來看看如何使用表達式的範例: #!/usr/bin/env zhpy # 檔名: expression.twpy 長 = 5 寬 = 2 面積 = 長 * 寬 # 面積 = 長 * 寬 印出 '面積是', 面積 印出 '周長是', 2 * (長 + 寬) # 周長為 2 倍的長加寬 輸出結果: $ zhpy expression.twpy 面積是 10 周長是 14 python 版: #!/usr/bin/env python # File name: expression.py length = 5 breadth = 2 area = length * breadth # 面積 = 長 * 寬 print 'Area is', area print 'Perimeter is', 2 * (length + breadth) # 周長為 2 倍的長加寬 python 版輸出結果: $ python expression.py Area is 10 Perimeter is 14 程式如何運作矩形的長與寬被儲存在同名的變量中。我們使用這些表達式來計算矩形的面積和周長。 我們將表達式 '長 * 寬' 運算的結果儲存至變量 '面積' 中,接著用 '印出' 語句輸出結果。 在第二個例子中, 我們直接將表達式'2 * (長 + 寬)' 運算產生的值用'印出'語句輸出。 另外,你可能注意到了周蟒的輸出多麼漂亮。即使我們沒有在'面積是'和變量'面積'之間指定空格, 周蟒語言自動在兩者間加上了一個空格,好讓我們得到一個清晰的輸出。程式碼本身也是同樣地保持清晰。 結語我們已經學習了如何使用運算符、運算元和表達式。這些元素是所有周蟒程式的基本組成部分。 接下來,我們將學習如何在語句中利用這些表達式。 |
Sign in to add a comment