Python數值運算與賦值的快捷方式

一種比較常見的操作是對一個變量進行一項數學運算並將運算得出的結果返回給這個變量,因此對於這類運算通常有如下的快捷表達方式:

a = 2
a = a * 3

同樣也可寫作:

a = 2
a *= 3

要注意到 變量 = 變量 運算 表達式 會演變成 變量 運算 = 表達式。
求值順序8

如果你有一個諸如 2 + 3 * 4 的表達式,是優先完成加法還是優先完成乘法呢?我們的高中數學知識會告訴我們應該先完成乘法。這意味着乘法運算符的優先級要高於加法運算符。
下面將給出 Python 中從最低優先級(最少綁定)到最高優先級(最多綁定)的優先級表。這意味着,在給定的表達式中,Python 將優先計算表中位列於後的較高優先級的運算符與表達式。
爲了保持完整,下表是從 Python教程 參考手冊 中引用而來。你最好使用圓括號操作符來對運算符與操作數進行分組,以更加明確地指定優先級。這也能使得程序更加可讀。你可以閱讀改變運算順序來了解更多的細節。
lambda:Lambda 表達式
if - else :條件表達式
or:布爾“或”
and:布爾“與”
not x:布爾“非”
in, not in, is, is not, <, <=, >, >=, !=, ==:比較,包括成員資格測試(Membership Tests)和身份測試(Identity Tests)。
|:按位或
^:按位異或
&:按位與
<<, >>:移動
+, -:加與減
*, /, //, %:乘、除、整除、取餘
+x, -x, ~x:正、負、按位取反
**:求冪
x[index], x[index:index], x(arguments...), x.attribute:下標、切片、調用、屬性引用
(expressions...), [expressions...], {key: value...}, {expressions...}:表示綁定或元組、表示列表、表示字典、表示集合
我們還沒有遇到的運算符將在後面的章節中加以解釋。
在上表中位列同一行的運算符具有相同優先級。例如 + 和 - 就具有相同的優先級。

改變運算順序

爲了使表達式更加易讀,我們可以使用括號。舉個例子,2 + (3 4) 自是要比 2 + 3 4 要更加容易理解,因爲後者還要求你要了解運算符的優先級。和其它的一切一樣,使用括號同樣也要適度(而不要過度),同時亦應不要像 (2 + (3 * 4)) 這般冗餘。
使用括號還有一個額外的優點——它能幫助我們改變運算的順序。同樣舉個例子,如果你希望在表達式中計算乘法之前應先計算加法,那麼你可以將表達式寫作 (2 + 3) * 4。

結合性9

運算符通常由左至右結合。這意味着具有相同優先級的運算符將從左至右的方式依次進行求值。如 2 + 3 + 4 將會以 (2 + 3) +4 的形式加以計算。

表達式

案例(將其保存爲 expression.py):

length = 5
breadth = 2

area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))

輸出:

$ python expression.py
Area is 10
Perimeter is 14

它是如何工作的
矩形的長度(Length)與寬度(Breadth)存儲在以各自名稱命名的變量中。我們使用它們並藉助表達式來計算矩形的面積(Area)與周長(Perimeter)。我們將表達式 length breadth 的結果存儲在變量 area 中並將其通過使用 print 函數打印出來。在第二種情況中,我們直接在 print 函數中使用了表達式 2 (length + breadth) 的值。
同時,你需要注意到 Python是如何漂亮地打印出 輸出結果的。儘管我們沒有特別在 Area is 和變量 area 之間指定空格,Python 會幫我們加上所以我們就能得到一個整潔的輸出結果,同時程序也因爲這樣的處理方式而變得更加易讀(因爲我們不需要在用以輸出的字符串中考慮空格問題)。這便是一個 Python 是如何讓程序員的生活變得更加便捷美好的範例。

總結

我們已經瞭解瞭如何使用運算符、操作數與表達式——這些是我們構建任何程序的基本塊。接下來,我們將看到如何在程序中善加利用這些語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章