python运算符
運算符用于執行程序代碼運算,會針對一個以上操作數項目來進行運算。在python中有7個運算符,分別有:算術運算符、比較(關系)運算符、賦值運算符、邏輯運算符、位運算符、成員運算符、身份運算符。
算術運算符
算數運算符有 + - * / %// ** 7個。
注意:使用運算符時,左邊對象的 自身方法或 自身的反向方法(如 : __add__ 和 __radd__ )是否符合它們的要求,否者就會報錯“TypeError”。
1 、+
用于對象之間的相加,通常用于數字的加法運算和字符串拼接。
a1 = 10 b1 = 20 a2 = "abc" b2 = "def" print(a1 + b1) ############################################## # 結果 abcdef print(a2 + b2) ############################################## # 結果 30 print(a1 + b2) # ########################################### # 不符合 __add__ 、 __radd__ 要求會報錯 # TypeError: unsupported operand type(s) for +: 'int' and 'str'
2、 -
主要用于數字的加減
a1 = 10 b1 = 20 print(a1 - b1) # ######################################### # 結果 -10
3、*
主要用于數字相乘或數據重復多少次。
a1 = 10 b1 = 20 a2 = "abc" a3 = [1,2] print(a1 * b1) # ======> 200 print(a2 * 2) # ======> abcabc print(a3 * 3) # 列表重復3次 # ======> [1, 2, 1, 2, 1, 2]
4、/
主要用于數字相除
a1 = 10 b1 = 20 print(a1 + b1) # =========> 0.5
5、%
取模 - 返回除法的余數
a1 = 11 b1 = 2 print(a1 % b1) # ============> 1
6、//
取整除 - 返回商的整數部分(向下取整)
a1 = 11 b1 = 2 print(a1 // b1) # ===============> 5
7、**
數字冪運算
a1 = 10 b1 = 2 print(a1 ** b1) # ==============> 100
比較(關系)運算符
比較運算符有:== != <> > < >= <= 7個。使用比較運算符時,會返回一個布爾值(True或False)。
1、==
用于比較對象是否相等,與is有區別。
a1 = 10 b1 = 2 a2 = int(10) print(a1 == b1) # ==================> False print(a1 == a2) # ==================> True
2、 != 和<>
這兩個運算符都是用于比較兩個對象是否不相等。
注:在python3中已經沒有<>, 只有!=。
a1 = 10 b1 = 2 a2 = 10 print(a1 != b1) # ===================== > True print(a1 != a2) # =====================> False
3、>
是否大于。
a1 = 10 b1 = 2 print(a1 > b1) # ============> True
4、<
是否小于。
a1 = 10 b1 = 2 print(a1 < b1) # ============> False
5、>=
是否大于等于。
a1 = 10 b1 = 11 a2 = 10 print(a1 >= b1) # ============> False print(a1 >= a2) # ============> True
6、<=
是否小于等于。
a1 = 10 b1 = 11 a2 = 10 print(a1 <= b1) # ==============>True print(a1 <= a2) # ==============> True
賦值運算符
賦值運算符是用于給變量賦值的運算符。包括 = 和 =與算術運算符的結合( += -= *= /= %= //= **= ),共8個。
1、=
把等號右邊的值賦給左邊的變量,不參與算術運算。
a = 1 b = "hello" c = [1, 2, 3]
2、+=
和原來的值相加并重新賦值給自己。
a = 11 a += 10 # 等價于:a = a + 10 b = [1, 2] b += [3, 4] print(a) # ==================> 21 print(b) # ==================> [1, 2, 3, 4]
3、-=
和原來的值相減并重新賦值給自己。
a = 11 a -= 10 print(a) # ================> 1
4、*=
和原來的值相乘并重新賦值給自己。
a = 2 a *= 5 print(a) # ====================> 10
5、/=
和原來的值相除并重新賦值給自己。
a = 10 a /= 2 print(a) # ========================> 5.0
6、%=
和原來的值取模并重新賦值給自己。
a = 11 a %= 2 print(a) # ======================> 1
7、//=
和原來的值取整并重新賦值給自己。
a = 11 a //= 2 print(a) # ==================> 5
8、**=
和原來的值進行冪運算并重新賦值給自己。
a = 10 a **= 2 print(a) # ===================> 100
邏輯運算符
print的邏輯運算符有3個,分別是 and、or和not。
1、and
對應布爾"與" , 如果 左邊 為 False,返回 False,否則它返回 右邊 的計算值。
# 注:0的布爾值為False,其他數的布爾值為True x1 = 9 y1 = 10 x2 = 0 y2 = 12 + 23 x3 = True y3 = 12 + 10 print(x1 and y1) # =====================> 10 print(x2 and y2) # =====================> 0 print(x3 and y3) # =====================> 22
2、or
對應布爾"或" ,如果 左邊為True,它返回 左邊 的值,否則它返回 右邊 的計算值。
x1 = 9 y1 = 10 x2 = False y2 = 12 + 10 print(x1 or y1) # ====================> 9 print(x2 or y2) # ====================> 22
3、not
對應布爾"非" ,如果 為 True,返回 False 。如果為 False,它返回 True。
a = 1 b = 0 print(not a) # =====================> False print(not b) # =====================> True
位運算符
按位運算符是把數字看作二進制來進行計算的。python的位運算符有 & | ^ ~ << >> ,一共6個。關于運算方式請看 按位與、或、異或等運算方法。
1、&
按位與運算符,參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
a = 3 # 0b11 b = 5 # 0b101 print(a & b) # ==================> 1
2、|
按位或運算符,只要對應的二個二進位有一個為1時,結果位就為1。
a = 3 b = 5 print(a | b) # ==============> 7 # 0b111
3、^
按位異或運算符,當兩對應的二進位相異時,結果為1。
a = 3 b = 5 print(a ^ b) # ==============> 6 # 0b110
4、~
按位取反運算符,對數據的每個二進制位取反,即把1變為0,把0變為1 。~x類似于-x-1。
a = 3 print(~a) # ===============> -4 # -0b100
5、<<
左移動運算符:運算數的各二進位全部左移若干位,由<<右邊的數字指定了移動的位數,高位丟棄,低位補0。
a = 3 print(a << 2) #==================> 12 # 0b1100
6、>>
右移動運算符:把">>"左邊的運算數的各二進位全部右移若干位,>>右邊的數字指定了移動的位數。
a = 10 # 0b1010 print(a >> 2) # ===============> 2 # 0b10
成員運算符
成員運算符由于判斷成員與序列的包含關系,序列包含字符串、元祖、列表、字典等。成員運算符有兩個 : in和 not in
1、in
如果在指定的序列中找到值返回 True,否則返回 False。
msg = "hello world"
name_tuple = ("Alex", "Jack", "Iain",)
name_list = ["Alex", "Jack", "Iain"]
info_dic = {
"name": "Jack",
"age": 20
}
print("e" in msg)
# ==========> Ture
print("William" in name_tuple)
# ==========> False
print("Alex" in name_tuple)
# ==========> True
print("name" in info_dic) # 序列為字典時判斷的是鍵是否在序列中
# ==========> True
2、not in
如果在指定的序列中沒有找到值返回 True,否則返回 False。
msg = "hello world"
name_tuple = ("Alex", "Jack", "Iain",)
name_list = ["Alex", "Jack", "Iain"]
info_dic = {
"name": "Jack",
"age": 20
}
print("e" not in msg)
# ====================> False
print("William" not in name_tuple)
# ====================> True
print("Alex" not in name_tuple)
# ====================> False
print("name" not in info_dic)
# ====================> False
身份運算符
身份運算符用于比較兩個對象的存儲單元(通常比較對象的ID),Python的身份運算符有2個:is和 not is
1、is
is 是判斷兩個標識符是不是引用自一個對象,如果引用的是同一個對象則返回 True,否則返回 False
a = "Jack" b = "Jack" print(id(a)) # ==================>2294321321136 print(id(b)) # ==================> 2294321321136 print(a is b) # ==================> True
2、isnot
判斷兩個標識符是不是引用自不同對象,如果引用的不是同一個對象則返回結果 True,否則返回 False。
a = "Jack" b = "Jack" c = 12 print(id(a)) # ================> 1464669902000 print(id(b)) # ================> 1464669902000 print(id(c)) # ================> 140725329687136 print(a is not b) # ================> False print(a is not c) # ================> True
運算符優先級
python有這么多的運算符,當多個運算符一起使用時就會有一定的優先級。一般情況下,運算符優先級表決定了哪個運算符在別的運算符之前計算。但是,如果你想要改變它們默認計算順序,你得使用圓括號。例如,你想要在一個表達式中讓加法在乘法之前計算,那么你就得寫成類似(10 + 20) * 2的樣子。
其優先級順序如下表所示:
| 序號 | 運算符 | 描述 |
|---|---|---|
| 1 | ** |
指數(次冪)運算 |
| 2 | ~ + - |
補碼,一元加減(最后兩個的方法名稱是+@和-@) |
| 3 | * / % // |
乘法,除法,模數和地板除 |
| 4 | + - |
|
| 5 | >> << |
向右和向左位移 |
| 6 | & |
按位與 |
| 7 | ^ |
按位異或和常規的“OR” |
| 8 | <= < > >= |
比較運算符 |
| 9 | <> == != |
等于運算符 |
| 10 | = %= /= //= -= += *= **= |
賦值運算符 |
| 11 | is is not |
身份運算符 |
| 12 | in not in |
成員運算符 |
| 13 | not or and |
邏輯運算符 |
注:更多關于運算符的信息可以點擊運算符重構。
總結
- 上一篇: 如何减掉胯部赘肉 几招让你甩掉赘肉
- 下一篇: Mac版-AndroidStudio自带