Python之運算符詳解

1.運算符分類

  • 算術運算符:+、-、*、/、%、//、**
  • 比較運算符:==、!=、>、<、>=、<=
  • 賦值運算符:=、+=、-+、*=、/=、%=、//=、**=
  • 邏輯運算符:and、or、not
  • 位運算符:&、|、~、^、<<、>>
  • 成員運算符:in、not in
  • 身份運算符:is、is not

1.1 算術運算符

運算符 描述
+ 加,兩個數相加
- 減,兩個數相減
* 乘,兩個數相乘
/ 除,兩個數相除

//

求餘,向下取接近除數的整數
% 取模,返回觸發的餘數
** 冪,返回x的y次冪
>>> 3 + 2 
5
>>> 0.1 + 0.2            #Python浮點數的運算其包含的小數位數是不確定的
0.30000000000000004
>>> 0.3 - 0.2
0.09999999999999998
>>> 0.2 * 0.1
0.020000000000000004
>>> 0.1 / 0.2
0.5
>>> 10 // 3
3
>>> 10 % 3               
1
>>> 2 ** 3
8

求餘運算也可用於浮點數甚至負數,但是並不是很好理解。

>>> 10 % 3
1
>>> 10 % -3
-2
>>> -10 % 3
2
>>> -10 % -3
-1

通過研究與之配套的整除運算可幫助理解求餘運算的工作原理。

基於除法運算的工作原理,很容易理解最終的餘數是多少。

x % y的結果爲x除以y的餘數。換而言之,結果爲執行整除時餘下的部分,即x % y等價於x-((x // y) * y)。

對於整除運算,需要明白的一個重點是它向下圓整結果。因此在結果爲負數的情況下,圓整後將離0更遠。這意味着對於-10 // 3,將向下圓整到-4,而不是向上圓整到-3。

1.2 比較運算符

結果返回布爾值(True或False)

運算符

描述

== 等於,比較兩者是否相等
!= 不等於,比較兩者是否不相等
> 大於,返回a是否大於b
< 小於,返回a是否小於b
>= 大於,返回a是否大於等於b
<= 小於,返回a是否小於小於b
>>> 5 == 3
False
>>> 5 != 3
True
>>> 5 > 3
True
>>> 5 < 3
False
>>> 5 >= 3
True
>>> 5 <= 3
False

1.3 賦值運算符

注:python沒有自增自減運算符(如++、--)

運算符

描述

= 賦值運算符
+=

加法賦值運算符,a += b等價於a = a + b

-= 減法賦值運算符,a -= b等價於a = a - b
*= 乘法賦值運算符,a *= b等價於a = a * b
/= 除法賦值運算符,a /= b等價於a = a / b
//= 求餘賦值運算符,a //= b等價於a = a // b
%= 取模賦值運算符,a %= b等價於a = a % b
**= 冪賦值運算符,a **= b等價於a = a ** b

>>> a = 20
>>> b = 10
>>> a += b
>>> a
30
>>> a -= b
>>> a
20
>>> a *= b
>>> a
200
>>> a /= b
>>> a
20.0
>>> a //= 2
>>> a
10.0
>>> a = 10
>>> a %= 4
>>> a
2
>>> a **= 2
>>> a
4

1.4 邏輯運算符

運算符

描述

and 布爾與,and兩端都爲True則爲True,否則爲False
or 布爾或,or兩端只要有一個爲True則爲True,否則爲False
not 布爾非,若x爲True,返回False。若x爲False,則返回True
>>> True or True and False              #可以看出and優先級高於or
True                                    #正確的執行順序爲:True or (True and False)  
>>> not not True or False and not True  #可以看出優先級:not>and>or
True                       #正確的執行順序爲:not (not (True or (False and (not True))))

1.5 位運算符

運算符

描述

& 按位與運算符,參與運算的兩個值,若相應位都爲1,則該位的結果爲1,否則爲0
| 按位或運算符,只要對應的兩個二進制值有一個爲1時,結果就爲1;全爲0則爲0
~ 按位取反運算符,對數據的每個二進制取反,即把1變0,0變1
^ 按位異或運算符,當兩對應的二進制相應位不相同時,則該位的結果爲1
<< 左移運算符,運算符的各二進制位全部左移若干位,高位丟棄,低位補0
>> 右移運算符,運算符的各二進制位全部右移若干位,高位補0,低位丟棄
>>> 3 & 2              #3二進制爲011,2二進制爲010,按位與後爲010,轉換爲十進制就是2
2
>>> 3 | 2              #3二進制爲011,2二進制爲010,按位或後爲011,轉換爲十進制就是3
3
>>> 3 ^ 2              #3二進制爲011,2二進制爲010,按位異或後爲001,轉換爲十進制就是1
1
>>> ~3                 #3二進制爲011,按位取反後爲100,轉換爲十進制就是4
-4
>>> 8 << 2             #8二進制爲1000,左移兩位爲100000(末尾補2個0),轉換爲十進制就是32
32
>>> 8 >> 2             #8二進制爲1000,左移兩位爲0010(高位補2個0),轉換爲十進制就是2
2

1.6 成員運算符

運算符

描述

in 若在指定序列中找到指定值返回True,否則返回False
not in 若在指定序列中沒有找到指定值返回False,否則返回True
>>> 3 in (1,2,3)
True
>>> 4 in (1,2,3)
False
>>> 'a' in 'python'
False
>>> 'p' in 'python
True

1.7 身份運算符

運算符

描述

is 若兩個標識符引用自一個對象返回True,否則返回False
is not 若兩個標識符引用自不同對象返回True,否則返回False

 

>>> a = 5
>>> b = 3 
>>> c = 5
>>> a is b
False
>>> a is c
True
>>> b is c
False
>>> a is not b
True
>>> a is not c
False

2. 運算符優先級

運算符(降低優先順序)

說明

**

冪運算符

~、+、-

按位翻轉、一元加號、一元減號

*、/、%、//

算術運算符

>>、<<

位運算符

&

位運算符

^、|

位運算符

<、> 、<=、>=

比較運算符

==、!=

比較運算符

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

賦值運算符

is、is not

身份運算符

in、not in

成員運算符

and、or、not

邏輯運算符

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