3.3 Python運算子
運算子用于執行程式代碼運算,根據運算元一般分為一元運算子、二元運算子,例如:2+3,其運算元是2和3,而運算子則是+,在Python中運算子可以分為以下幾種型別:算術運算子、比較(關系)運算子、賦值運算子、邏輯運算子、位運算子、成員運算子、身份運算子,
3.3.1 算術運算子
+、-、*:分別對應數學中的加減乘,在此不做過多的贅述,
/:除法,注意結果回傳的是浮點數,4 / 2 → 2.0
%:取模,回傳除法的余數,7 % 3 → 1
**:冪運算,4 ** 2 → 16
//:取整除,也叫地板除,回傳商的整數部分(向下取整),15 // 6 → 2
1、算術運算子全是對數值型別資料進行操作的運算子
2、算術運算子全是二元運算子
3、回傳的型別為數值型別
算術轉換規則
1、如果任一運算元為復數,另一運算元會被轉換為復數;
2、否則,如果任一運算元為浮點數,另一運算元會被轉換為浮點數;
3、否則,兩者應該都為整數,不需要進行轉換,
3.3.2 比較(關系)運算子
==、!=、>、<、>=、<=:分別對應等于、不等于、大于、小于、大于或等于、小于或等于,
1、比較(關系)運算子可以運算元值型別,也可以操作物件,
2、比較(關系)運算子全是二元運算子,
3、回傳的結果為布爾型別(非真即假)
3.3.3 賦值運算子
=:最常用的賦值運算子,a = 5 → 將5賦值給a,
算術運算子 + =:先進行算術運算之后再進行賦值,例如:a += 3等價于:a = a + 3,其它的類似,
=::海象運算子,Python3.8之后新增的一種賦值運算子,可以直接進行賦值后再形成運算式,從而節省代碼的撰寫量,
↓未使用海象運算子
age = 20
if age > 18:
print("已經成年了")
↓使用海象運算子
if(age:= 20) > 18:
print("已經成年了")
↓未使用海象運算子
file = open("demo.txt", "r")
while True:
line = file.readline()
if not line:
break
print(line.strip())
↓使用海象運算子
file = open("demo.txt", "r")
while (line := file.readline()):
print(line.strip())
↓未使用海象運算子
while True:
p = input("Enter the password: ")
if p == "youpassword":
break
↓使用海象運算子
while(p := input("Enter the password: ")) != "youpassword":
continue
1、賦值運算子可以運算元值型別,也可以操作物件,
2、賦值運算子全是二元運算子,
3.3.4 邏輯運算子
and:邏輯與,若2個運算元都為真則結果為True,否則為False,
or:邏輯或,若2個運算元都為假則結果為False,否則為True,
not:邏輯非,取反,若運算元為True,則結果為False,反之亦然,
1、運算元必須為布爾型別或能隱式轉換成布爾型別,
2、and、or是兩元運算子,而not是一元運算子,
3、and其實短路邏輯,就是先判斷第1個引數的布爾型別,如果是False,那么整個運算式就是False,而不必去判斷第2個引數的布爾型別,如果為True,那么整個運算式的最后結果就是第2個引數的布爾型別,這個稱之為短路邏輯,or也同理,
4、優先級:not > and > or
5、回傳的型別為布爾型別
3.3.5 位運算子
位運算子會將數字轉換成二進制并進行運算,位運算子將兩個二進制數位從高到低依次進行運算,為了方便講解,下面的變數a 為 60,b 為 13,a和b的二進制格式為:
a = 0011 1100
b = 0000 1101
&:按位與,如果參與運算的兩個2進制位都為1,則結果為1,否則為0,
a & b → 0000 1100
|:按位或,如果參與運算的兩個2進制位有一個為1,則結果為1,否則為0,
a & b → 0011 1101
^:按位異,如果參與運算的兩個2進制位相異時,結果為1,否則為0,
a ^ b → 0011 0001
~:按位取反,對資料的每個二進制位取反,即把1變為0,把0變為1,
~a = 1100 0011
<<:左移動,運算元的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0,
a << 2 → 1111 0000
>>:右移動,運算元的各二進位全部右移若干位,由 >> 右邊的數字指定了移動的位數,低位丟棄,高位補0,
a >> 2 → 0000 1111
1、運算元必須為整數型別
2、&、|、^是兩元運算子,而~、<<、>>是一元運算子
3.3.6 成員運算子
成員運算子用來判斷某個物件是不是某個序列中的成員,
in:物件在序列中則回傳True,否則回傳Flase,
not in:物件不在序列中則回傳True,否則回傳False,
1、in和not in都是二元運算子,
2、回傳值為布爾型別,
3.3.7 身份運算子
身份運算子用于對物件執行比較操作,即這些運算子檢查兩個運算元是否參考相同的物件(具有相同的存盤位置),
is:判斷兩個識別符號是不是參考自同一個物件,x is y:類似id(x) == id(y),如果參考的是同一個物件則回傳True,否則回傳False,
is not:判斷兩個識別符號是不是參考自不同物件,x is not y:類似id(a) != id(b),如果參考的不是同一個物件則回傳結果True,否則回傳False,
1、is 和 is not都是二元運算子
2、回傳的結果為布爾型別,
3.3.8 運算子優先級
以下列出了從最高到最低優先級的所有運算子:
| 運算子 | 描述 |
|---|---|
| ** | 指數(最高優先級) |
| ~、+、- | 按位翻轉、正號、負號 |
| *、/、%、// | 乘、除、取模、取整除 |
| +、- | 加、減 |
| >>、<< | 按位右移、按位左移 |
| & | 按位與 |
| |、^ | 按位或、按位異或 |
| <=、<、>、>= | 比較運算子 |
| <>、==、!= | 等于運算子 |
| =、%=、/=、//=、-=、+=、*=、**= | 賦值運算子 |
| is、is not | 身份運算子 |
| in、not in | 成員運算子 |
| not、and、or | 邏輯運算子 |
對于某些不清楚優先級的運算子,可以通過括號來改變執行運算順序,
練習
1、了解Python運算子
2、將教程中所有的運算子示例手敲一遍并熟悉
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/472878.html
標籤:其他
下一篇:Mybatis快速上手
