Acrobat Pro DC 2022 專業PDF編輯軟體
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
=:
:海象運算子。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、將教程中所有的運算子示例手敲一遍並熟悉