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 |
邏輯運算符 |