運算符優先級

運算符優先級

如果你有一個如2 + 3 * 4那樣的表達式,是先做加法呢,還是先做乘法?我們的中學數學告訴我們應當先做乘法——這意味着乘法運算符的優先級高於加法運算符。

下面這個表給出Python的運算符優先級,從最低的優先級(最鬆散地結合)到最高的優先級(最緊密地結合)。這意味着在一個表達式中,Python會首先計算表中較下面的運算符,然後在計算列在表上部的運算符。

下面這張表(與Python參考手冊中的那個表一模一樣)已經顧及了完整的需要。事實上,我建議你使用圓括號來分組運算符和操作數,以便能夠明確地指出運算的先後順序,使程序儘可能地易讀。例如,2 + (3 * 4)顯然比2 + 3 * 4清晰。與此同時,圓括號也應該正確使用,而不應該用得過濫(比如2 + (3 + 4))。

表5.2 運算符優先級

運算符描述
lambda Lambda表達式
or 布爾“或”
and 布爾“與”
not x 布爾“非”
in,not in 成員測試
is,is not 同一性測試
<,<=,>,>=,!=,== 比較
| 按位或
^ 按位異或
& 按位與
<<,>> 移位
+,- 加法與減法
*,/,% 乘法、除法與取餘
+x,-x 正負號
~x 按位翻轉
** 指數
x.attribute 屬性參考
x[index] 下標
x[index:index] 尋址段
f(arguments…) 函數調用
(experession,…) 綁定或元組顯示
[expression,…] 列表顯示
{key:datum,…} 字典顯示
‘expression,…’ 字符串轉換

其中我們還沒有接觸過的運算符將在後面的章節中介紹。

在表中列在同一行的運算符具有 相同優先級 。例如,+-有相同的優先級。

計算順序

默認地,運算符優先級表決定了哪個運算符在別的運算符之前計算。然而,如果你想要改變它們的計算順序,你得使用圓括號。例如,你想要在一個表達式中讓加法在乘法之前計算,那麼你就得寫成類似(2 + 3) * 4的樣子。

結合規律

運算符通常由左向右結合,即具有相同優先級的運算符按照從左向右的順序計算。例如,2 + 3 + 4被計算成(2 + 3) + 4。一些如賦值運算符那樣的運算符是由右向左結合的,即a = b = c被處理爲a = (b = c)

發佈了51 篇原創文章 · 獲贊 10 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章