Python 運算子優先順序



Python 運算子優先順序

一個表示式可能有多個運算子需要計算。運算子優先順序定義了運算子計算的順序。換句話說,運算子的計算順序由運算子優先順序決定。

如果某個表示式包含多個運算子,則它們的計算順序由優先順序順序決定。例如,考慮以下表達式

>>> a = 2+3*5

這裡,a的值是多少? - 是 17(先計算 3 乘以 5,然後加 2)還是 25(先計算 2 加 3,然後乘以 5)?Python 的運算子優先順序規則在這裡起作用。

如果我們只考慮 Python 中的算術運算子,則 Python 直譯器也採用了傳統的BODMAS規則,其中括號優先計算,然後是除法乘法運算子,最後是加法減法運算子。因此,在上述表示式中,a 將變為 17。

除了運算子優先順序之外,運算子的結合性也很重要。如果表示式由優先順序相同的運算子組成,則結合性決定了順序。大多數運算子都具有從左到右的結合性。這意味著左側的運算子先於右側的運算子計算。

讓我們考慮另一個表示式

>>> b = 10/5*4

在這種情況下,*(乘法)和 /(除法)運算子具有相同的優先順序。但是,從左到右的結合性規則首先執行除法(10/5 = 2),然後執行乘法(2*4 = 8)。

Python 運算子優先順序表

下表列出了 Python 中所有運算子,按優先順序從高到低排序。Operators 列中同一單元格中的運算子具有相同的優先順序。

序號 運算子及描述
1

(),[], {}

圓括號和方括號

2

[索引], [索引:索引]

下標,切片

3

await x

等待表示式

4

**

指數

5

+x, -x, ~x

正號,負號,按位取反

6

*, @, /, //, %

乘法,矩陣乘法,除法,地板除,取餘

7

+, -

加法和減法

8

<<, >>

左移,右移

9

&

按位與

10

^

按位異或

11

|

按位或

12

in, not in, is, is not, <, <=, >, >=, !=, ==

比較,包括成員測試和身份測試

13

not x

布林非

14

and

布林與

15

or

布林或

16

if – else

條件表示式

17

lambda

lambda 表示式

18

:=

沃爾拉斯運算子

Python 運算子優先順序示例

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d       #( 30 * 15 ) / 5
print ("Value of (a + b) * c / d is ",  e)

e = ((a + b) * c) / d     # (30 * 15 ) / 5
print ("Value of ((a + b) * c) / d is ",  e)

e = (a + b) * (c / d);    # (30) * (15/5)
print ("Value of (a + b) * (c / d) is ",  e)

e = a + (b * c) / d;      #  20 + (150/5)
print ("Value of a + (b * c) / d is ",  e)

執行上述程式時,將產生以下結果:

Value of (a + b) * c / d is  90.0
Value of ((a + b) * c) / d is  90.0
Value of (a + b) * (c / d) is  90.0
Value of a + (b * c) / d is  50.0
廣告