Python3運算符最全參考手冊!!

目錄

1、算術運算符

2、比較(關係)運算符

3、賦值運算符

4、邏輯運算符

​​​​​​​5、位運算符

​​​​​​​6、成員運算符

​​​​​​​7、身份運算符

​​​​​​​8、運算符優先級


 

Python3支持多種運算符,包括:

  1. 算術運算符
  2. 比較(關係)運算符
  3. 賦值運算符
  4. 邏輯運算符
  5. 位運算符
  6. 成員運算符
  7. 身份運算符
  8. 運算符優先級

下面我們分別介紹。

 

 

1、算術運算符

算術運算符定義了數學上常用的幾種運算符,如下表所示:

運算符

描述

實例

+

- 兩個對象相加

a + b 輸出結果 31

-

- 得到負數或是一個數減去另一個數

a - b 輸出結果 -11

*

- 兩個數相乘或是返回一個被重複若干次的字符串

a * b 輸出結果 210

/

- x 除以 y

b / a 輸出結果 2.1

%

取模 - 返回除法的餘數

b % a 輸出結果 1

**

- 返回xy次冪

a**b 1021次方

//

取整除 - 返回商的整數部分

9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0

abs()

取絕對值

abs(-12) => 12

round()

四捨五入

round(1.6) => 2

math.ceil()

向上取整,需要引入math模塊     

math.ceil(1.2) => 2

math.floor()

向下取整,需要引入math模塊     

math.floor(1.2)=> 1

 

實例:

#  author: Tiger,    完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_1.py

# 算術運算符
a = 100
b = 3

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)

print(abs(-12))
print(round(1.2))
print(round(1.7))
print(round(1.78, 1))

import math
print(math.ceil(1.2))
print(math.floor(1.2))

 

輸出爲:

103

97

300

33.333333333333336

33

1

1000000

12

1

2

1.8

2

1

 

2、比較(關係)運算符

比較運算符又稱爲關係運算符,用於比較兩個對象的大小關係,其返還結果是一個bool類型值,通常用於條件控制。

Python3支持得關係運算符如下:

運算符

描述

實例

==

等於 - 比較對象是否相等

(a == b) 返回 False

!=

不等於 - 比較兩個對象是否不相等

(a != b) 返回 True

>

大於 - 返回x是否大於y

(a > b) 返回 False

<

小於 - 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量TrueFalse等價。注意,這些變量名的大寫。

(a < b) 返回 True

>=

大於等於 - 返回x是否大於等於y

(a >= b) 返回 False

<=

小於等於 - 返回x是否小於等於y

(a <= b) 返回 True

 

實例:

#  author: Tiger,    完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_2.py

# 關係運算符
a = 100
b = 50

print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)

 

輸出爲:

False

True

True

False

True

False

 

​​​​​​​3、賦值運算符

賦值運算符,用於將一個值(或者變量的值)賦給一個變量。我們用得最多的,是等號=運算符。

Python3支持如下賦值運算符:

運算符

描述

實例

=

簡單的賦值運算符

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

:=

海象運算符(the walrus operator),可在表達式內部爲變量賦值。Python3.8 版本新增運算符。

 

 

實例如下:

#  author: Tiger,   完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_3.py

# 賦值運算符
a = 100
b = 50

c = a + b
c += a  # c = c + a
c -= a
c *= a
c /= a
c %= a
c **= a
c //= a

# 海象運算符:將表達式中的一部分賦值給一個變量,代碼更加簡潔,性能也更高
list_1 = [100, 200, 300]
if (d := len(list_1)) > 2:
    print(f"lenth of list_1 is {d}")


輸出爲:

lenth of list_1 is 3

 

注意海象運算符,這個是3.8版本新增的一種運算符。

 

​​​​​​​4、邏輯運算符

邏輯運算符用於判斷兩個bool型之間的關係,支持“與”、“或”、“非”操作。輸出值也是一個bool型。

 

Python3支持如下:

運算符

邏輯表達式

描述

and

x and y

布爾"" - 如果 x Falsex and y 返回 False,否則它返回 y 的計算值。

or

x or y

布爾"" - 如果 x True,它返回 x 的值,否則它返回 y 的計算值。

not

not x

布爾"" - 如果 x True,返回 False 。如果 x False,它返回 True

 

實例:

#  author: Tiger,    完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_4.py

# 邏輯運算符
print(True and False)
print(True or False)
print(not True)

# 通常是關係運算表達式,或者能轉換爲bool型的值
score = 80

print(f"小王的成績是良嗎? {(score > 70) and (score < 90)}")
print(f"小王的成績是差嗎? {not (score > 60)}")

 

輸出爲:

False

True

False

小王的成績是良嗎? True

小王的成績是差嗎? False

 

​​​​​​​5、位運算符

計算機是以二進制的方式來存儲數據的,位運算符支持我們以二進制位的方式來運算數據。

 

Python支持如下:

運算符

描述

實例

&

按位與運算符:參與運算的兩個值,如果兩個相應位都爲1,則該位的結果爲1,否則爲0

(a & b) 輸出結果 12 ,二進制解釋: 0000 1100

|

按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1。

(a | b) 輸出結果 61 ,二進制解釋: 0011 1101

^

按位異或運算符:當兩對應的二進位相異時,結果爲1

(a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001

~

按位取反運算符:對數據的每個二進制位取反,即把1變爲0,把0變爲1。

(~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。

<<

左移動運算符:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。

a << 2 輸出結果 240 ,二進制解釋: 1111 0000

>>

右移動運算符:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數

a >> 2 輸出結果 15 ,二進制解釋: 0000 1111

 

下圖示意了位運算符的操作原理:

 

實例:

#  author: Tiger,    完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_5.py

# 位運算符
a = 60  # 00111100
b = 50  # 00110010

print(a & b)
print(a | b)
print(~a)
print(a ^ b)
print(a << 3)
print(a >> 3)

 

輸出爲:

48

62

-61

14

480

7

 

我們通常用二進制位來描述一些狀態信息,這樣可以節省大量的內存空間。比如下面的實例,我們可以用8個二進制位來表示小王的考試科目是否完成。

# 應用實例 , 完整源碼下載,關注微信公衆號ID:tiger-python

# status對應1個byte-8個bit位。每個bit位分別代表不同的考試科目:
# 語文:0b00000001
# 數學:0b00000010
# 英語:0b00000100
# 地理:0b00001000
# 化學:0b00010000
# 體育:0b00100000

status = 0x0  # 初始狀態,所有科目都還沒有考

# 語文考試結束
status |= 0b00000001
# 體育考試結束
status |= 0b00100000

# 判斷語文是否已經考完
print(f"語文是否已經考試結束?{status & 0b00000001 == 0b00000001}")


# 判斷地理是否已經考完
print(f"地理是否已經考試結束?{status & 0b00001000 == 0b00001000}")

# 是否全部考試結束
print(f"是否都已經考試結束?{status == 0b00111111}")

輸出爲:

語文是否已經考試結束?True

地理是否已經考試結束?False

是否都已經考試結束?False

 

我們只用了一個字節空間,實現了6門課程的考試狀態描述。位運算符還有其它很多用途,大家可以百度。這裏不展開細講。

 

​​​​​​​6、成員運算符

成員運算符用於判斷一個元素是否是該對象的成員,其語法是:

item in seq

item not in seq

前面我們其實已經講過這個運算符了,這裏不再贅述。

                                                     

​​​​​​​7、身份運算符

身份運算符用於判斷兩個變量指向的對象是否是同一個。其語法是:

x is y

x is not y

它的返回值是一個bool類型。

它們判斷的依據是兩個變量指向的對象是否相同,等同於id(x) == id(y) 或者 id(x) != id(y)。

 

需要特別注意的是,is和==雖然都是比較兩者是否相等,當時其作用是完全不同的。is比較的是變量指向的對象是否相同,而==比較的是對象的value是否相同。

 

如下實例:

#  author: Tiger,    完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_6.py

# is和==的區別
x = 'abc'
y = 'abc'

print(f"value: x = {x} y = {y}")
print(f"id: id(x) = {id(x)} id(y) = {id(y)}")
print(f"x == y : {x == y}")
print(f"x is y : {x is y}")

list_x = [1, 2, 3]
list_y = [1, 2, 3]
print(f"value: list_x = {list_x} list_y = {list_y}")
print(f"id: id(list_x) = {id(list_x)} id(list_y) = {id(list_y)}")
print(f"list_x == list_y : {list_x == list_y}")
print(f"list_x is list_y : {list_x is list_y}")

輸出爲:

value: x = abc y = abc

id: id(x) = 2629122564208 id(y) = 2629122564208

x == y : True

x is y : True

value: list_x = [1, 2, 3] list_y = [1, 2, 3]

id: id(list_x) = 2629122650048 id(list_y) = 2629123938816

list_x == list_y : True

list_x is list_y : False

 

​​​​​​​8、運算符優先級

如數學中的運算表達式一樣,python的運算也存在類似的優先級。下表列出了從高優先級到低優先級的所以運算符:

運算符

描述

**

指數 (最高優先級)

~ + -

按位翻轉, 一元加號和減號

* / % //

乘,除,求餘數和取整除

+ -

加法減法

>> <<

右移,左移運算符

&

位 'AND'

^ |

位運算符

<= < > >=

比較運算符

== !=

等於運算符

= %= /= //= -= += *= **=

賦值運算符

is is not

身份運算符

in not in

成員運算符

not and or

邏輯運算符

 

如果表達式中存在多個運算符,那麼python按照上表優先級規則,先執行高優先級運算,在依次執行低優先級運算。

有時候我們需要改變上面的優先級,這時我們需要使用到小括號()。小括號可以嵌套使用。

實例如下:

#  author: Tiger,   完整源碼下載,關注微信公衆號ID:tiger-python

# file: ./6/6_7.py

# 運算符優先級
x, y, z = 10, 20, 30

print(x + y * z)
print((x + y) * z)

print(((x + y) + y) * z)

 

輸出爲:

610

900

1500

 

我們在代碼中應該合理使用()括號來表達運算優先級,這樣有助於提升代碼的可讀性。比如:x * y & z,由於*的優先級比&高,所以會先執行x*y,再執行&操作。爲了可讀性,我們會這樣寫:(x * y) & z,這裏的()括號並沒有改變運算優先級,只是爲了代碼看起來更容易理解,避免歧義。

 

更多python教程,請查看我的專欄《0基礎學python視頻教程》

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章