1. 程式人生 > >Python入門三運算子和表示式

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 輸出 8210位表示。
    • 左移2位1000表示小數8
  • >> (右移)

    • 將數字的位向右移動指定的位數。
    • 11 >> 1 輸出 5
    • 11以位表示1011,當右移1位時給出101小數5
  • & (按位和)

    • 位元和數字
    • 5 & 3 輸出 1
  • | (按位或)

    • 數字的按位OR
    • 5 | 3 輸出 7
  • ^ (按位異或)

    • 數字的按位異或
    • 5 ^ 3 輸出 6
  • ~ (逐位反轉)

  • < (小於)

    • 返回x是否小於y。所有比較運算子返回TrueFalse。請注意這些名稱的大小寫。
    • 5 < 3給予False3 < 5 輸出 True
    • 比較可以任意連結:3 < 5 < 7 輸出 True
  • > (大於)

    • 返回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 :布林OR
  • and :布林AND
  • not x :布林NOT
  • in, 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如何讓程式設計師輕鬆生活的一個例子。