Python入門三運算子和表示式
以下是可用運算子的快速概述:
-
+
(加)- 新增兩個物件
3 + 5
輸出8
。'a' + 'b'
輸出'ab'
。
-
-
(減去)- 給另一個數字減去一個數字; 如果第一個運算元不存在則假定為零。
50 - 24
輸出26
。
-
*
(乘)- 給出兩個數字的乘法或返回多次重複的字串。
2 * 3
輸出6
。'la' * 3
輸出'lalala'
。
-
**
(功率)- 將x返回到y的冪
3 ** 4
輸出81
(即3 * 3 * 3 * 3
)
-
/
(劃分)- 將x除以y
13 / 3
輸出4.333333333333333
-
//
(分和樓)- 將x除以y並將答案向下舍入到最接近的整數值。請注意,如果其中一個值是浮點數,您將返回浮點數。
13 // 3
輸出4
-13 // 3
輸出-5
9//1.81
4.0
-
%
(模)- 返回除法的餘數
13 % 3
輸出1
。-25.5 % 2.25
輸出1.5
。
-
<<
(左移)- 將數字位向左移動指定的位數。(每個數字在記憶體中用位或二進位制數字表示,即0和1)
2 << 2
輸出8
。2
由10
位表示。- 左移2位
1000
表示小數8
。
-
>>
(右移)- 將數字的位向右移動指定的位數。
11 >> 1
輸出5
。11
以位表示1011
,當右移1位時給出101
小數5
。
-
&
(按位和)- 位元和數字
5 & 3
輸出1
。
-
|
(按位或)- 數字的按位OR
5 | 3
輸出7
-
^
(按位異或)- 數字的按位異或
5 ^ 3
輸出6
-
~
(逐位反轉)- x的逐位反轉是 - (x + 1)
~5
輸出-6
。有關詳細資訊,請訪問http://stackoverflow.com/a/11810203
-
<
(小於)- 返回x是否小於y。所有比較運算子返回
True
或False
。請注意這些名稱的大小寫。 5 < 3
給予False
和3 < 5
輸出True
。- 比較可以任意連結:
3 < 5 < 7
輸出True
。
- 返回x是否小於y。所有比較運算子返回
-
>
(大於)- 返回x是否大於y
5 > 3
輸出True
。如果兩個運算元都是數字,則首先將它們轉換為通用型別。否則,它總是返回False
。
-
<=
(小於等於)- 返回x是否小於等於y
x = 3; y = 6; x <= y
輸出True
-
>=
(大於等於)- 返回x是否大於或等於y
x = 4; y = 3; x >= 3
輸出True
-
==
(等於)- 比較物件是否相等
x = 2; y = 2; x == y
輸出True
x = 'str'; y = 'stR'; x == y
輸出False
x = 'str'; y = 'str'; x == y
輸出True
-
!=
(不等於)- 比較物件是否不相等
x = 2; y = 3; x != y
輸出True
-
not
(布林NOT 相當於java中的 ! 符號)- 如果是
True
,則返回False
。如果是False
,則返回True
。 x = True; not x
回報False
。
- 如果是
-
and
(布林AND 相當於java中的 && 符號)x = False; y = True; x and y
返回,False
因為x為False。在這種情況下,Python不會評估y,因為它知道'和'表示式的左側是False
暗示整個表示式False
與其他值無關。這稱為短路評估。- 兩個值都為True才返回True,有一個False則返回False
-
or
(布林OR 相當於java中的 || 符號)x = True; y = False; x or y
回報True
。短路評估也適用於此。- 有一個為True則返回True
數學運算和賦值的快捷方式
通常對變數執行數學運算,然後將運算結果賦給變數,因此這些表示式有一個快捷方式:
a = 2
a = a * 3
可以寫成:
a = 2
a *= 3
注意var = var operation expression
成為var operation= expression
。
評估訂單
如果你有一個表示式,例如2 + 3 * 4
,是先新增還是乘法?我們的高中數學告訴我們應該首先進行乘法運算。這意味著乘法運算子的優先順序高於加法運算子。
下表給出了Python的優先順序表,從最低優先順序(最小繫結)到最高優先順序(大多數繫結)。這意味著在給定的表示式中,Python將首先在表中較高的值之前評估表中較低的運算子和表示式。
下面的表格取自Python參考手冊,是為了完整起見。最好使用括號來適當地對運算子和運算元進行分組,以便明確指定優先順序。這使程式更具可讀性。有關詳細資訊,請參閱下面的更改評估順序。
lambda
:Lambda表示式if - else
:條件表示式or
:布林ORand
:布林ANDnot x
:布林NOTin, not in, is, is not, <, <=, >, >=, !=, ==
:比較,包括成員資格測試和身份測試|
:按位OR^
:按位異或&
:按位AND<<, >>
: 位移+, -
: 加減*, /, //, %
:乘法,除法,分割槽和取模+x, -x, ~x
:正,負,按位NOT**
:指數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
。
關聯性
操作員通常從左到右關聯。這意味著具有相同優先順序的運算子以從左到右的方式進行計算。例如,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
,然後使用該print
函式進行列印。在第二種情況下,我們直接2 * (length + breadth)
在print函式中使用表示式的值。
另外,請注意Python如何列印輸出。即使我們沒有'Area is'
在變數和變數之間指定空格area
,Python 也會為我們提供一個乾淨的輸出,並且程式更加可讀(因為我們不需要擔心字串中的間距)用於輸出)。這是Python如何讓程式設計師輕鬆生活的一個例子。