1. 程式人生 > >2-Python3從入門到實戰—基礎之運算符

2-Python3從入門到實戰—基礎之運算符

lis 取反 成員 標識符 按位運算符 賦值 log 布爾 block

Python從入門到實戰系列——目錄

Python語言支持以下類型的運算符:

  • 算術運算符
  • 比較(關系)運算符
  • 賦值運算符
  • 邏輯運算符
  • 位運算符
  • 成員運算符
  • 身份運算符
  • 運算符優先級

算術運算符

  • Python中算術運算符包含:+,-,*,/,%,**,//

    a = 10
    b = 5
    a + b  返回結果 15
    a - 5  返回結果 5
    a * b  返回結果 50
    a / b  返回結果 2.0         # / 總是返回浮點數
    a % b  返回結果 0           # % 表示a除以b取余數
    a ** b 返回結果 100000      # ** 表示 a 的 b 次方
    a // b 返回結果 2           # // 表示 a 除以 b 的商的整數部分
    10.0 // 5.0 返回結果 2

比較運算符

  • Python中比較運算符包含:>,<,>=,<=,==,!=

    a = 10
    b = 5
    ( a > b )   返回結果    True
    ( a < b )   返回結果    False
    ( a >= b )  返回結果    True
    ( a <= b )  返回結果    False
    ( a == b )  返回結果    False
    ( a != b )  返回結果    True

賦值運算符

  • Python中賦值運算符包含:=,+=,-=,*=,/=,%=,**=,//=

    a = 10
    b = 20
    c = a + b       # 將 a + b 的值賦值給c
    c += a          # 相當於 c = c + a
    c -= a          # 相當於 c = c - a
    c *= a          # 相當於 c = c * a
    c /= a          # 相當於 c = c / a
    c %= a          # 相當於 c = c % a
    c **= a         # 相當於 c = c ** a
    c //= a         # 相當於 c = c // a

邏輯運算符

  • Python中邏輯運算符包含:and,or,not
  • and: 布爾"與"; x and y 表示如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值;

    a = 10
    b = 20
    print( a and b )        # 輸出:20
  • or: 布爾"或"; x or y 表示 如果 x 是 True,它返回 x 的值,否則它返回 y 的計算值;

    a = 10
    b = 20
    print( a or b )         # 輸出:10
  • not: 布爾"非"; not x 表示如果 x 為 True,返回 False 。如果 x 為 False,它返回 True;

    a = 10
    b = 20
    print(not(a==10))       # 輸出:False
    print(not(b==10))       # 輸出:True

位運算符

  • Python中位運算符包含:&,|,^,~,<<,>>;按位運算符是把數字看作二進制來進行計算的;
  • & (按位與運算符):參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0;

    a = 0b0011 1100
    b = 0b0000 1101
    a & b = 0000 1100
  • | (按位或運算符):只要對應的二個二進位有一個為1時,結果位就為1;

    a = 0b0011 1100
    b = 0b0000 1101
    a | b = 0011 1101
  • ^ (按位異或運算符):當兩對應的二進位相異時,結果為1;

    a = 0b0011 1100
    b = 0b0000 1101
    a ^ b = 0011 0001
  • ~ (按位取反運算符):對數據的每個二進制位取反,即把1變為0,把0變為1。~x 類似於 -x-1;

    a = 0b0011 1100
    ~a = 1100 0011
  • << (左移動運算符):運算數的各二進位全部左移若幹位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0;

    a = 0b0011 1100
    a << 2  # a 左移兩位,即結果:1111 0000
  • “>>” (右移動運算符):把">>"左邊的運算數的各二進位全部右移若幹位,">>"右邊的數指定移動的位數;

    a = 0b0011 1100
    a >> 2  # a 右移兩位,即結果:0000 1111

    成員運算符

  • Python中成員運算符包含:in,not in;
  • in:如果在指定的序列中找到值返回 True,否則返回 False;

    a = 10
    list = [1, 2, 3, 4, 5 ];
    if ( a in list ):
    print ("變量 a 在列表中 list 中")
    else:
    print("變量 a 不在列表 list 中")
  • not in:如果在指定的序列中沒有找到值返回 True,否則返回 False;

    a = 10
    list = [1, 2, 3, 4, 5 ];
    if ( a not in list ):
    print ("變量 a 不在列表中 list 中")
    else:
    print("變量 a 在列表 list 中")

    身份運算符

  • Python中身份運算符包含:is,is not;身份運算符用於比較兩個對象的存儲單元
  • is 判斷兩個標識符是不是引用自一個對象,x is y, 類似 id(x) == id(y);

    a = 20
    b = 20
    if ( a is b ):
    print (" a 和 b 有相同的標識")
    else:
    print (" a 和 b 沒有相同的標識")
    if ( id(a) == id(b) ):
    print (" a 和 b 有相同的標識")
    else:
    print (" a 和 b 沒有相同的標識")
    # 輸出結果均為: a 和 b 有相同的標識
    # 修改 b 的值
    b = 30
    if ( a is b ):
    print (" a 和 b 有相同的標識")
    else:
    print (" a 和 b 沒有相同的標識")
    # 輸出結果: a 和 b 沒有相同的標識
  • is not 判斷兩個標識符是不是引用自不同對象,x is not y , 類似 id(a) != id(b)

    a = 20
    b = 30
    if ( a is not b ):
    print (" a 和 b 沒有相同的標識")
    else:
    print (" a 和 b 有相同的標識")
    if ( id(a) != id(b) ):
    print (" a 和 b 沒有相同的標識")
    else:
    print (" a 和 b 有相同的標識")
    # 輸出結果均為: a 和 b 沒有相同的標識
    # 修改 b 的值
    b = 20
    if ( a is not b ):
    print (" a 和 b 沒有相同的標識")
    else:
    print (" a 和 b 有相同的標識")
    # 輸出結果: a 和 b 有相同的標識

運算符優先級

  • 運算符優先級從高到底如下:
**          指數 (最高優先級)
~ + -       按位翻轉, 一元加號和減號 (最後兩個的方法名為 +@ 和 -@)
* / % //    乘,除,取模和取整除
+ -         加法減法
>> <<       右移,左移運算符
&           位 ‘AND‘
^ |         位運算符
<= < > >=   比較運算符
<> == !=    等於運算符
= %= /= //= -= += *= **=    賦值運算符
is is not                   身份運算符
in not in                   成員運算符
not or and                  邏輯運算符

2-Python3從入門到實戰—基礎之運算符