Python 運算子
我們將在這一節裡介紹 Python 運算子的相關知識。
運算子是對運算元 (值或變數) 執行特定操作的特殊符號, 例如, 在 a + b
中, +
是操作變數 a 和 b 的運算子, 這些變數稱為運算元。
下面是 Python 運算子的一些型別:
Python 算術運算子
算術運算子對變數進行加法、減法、乘法等算術運算的運算子。
以下表格列出了 Python 算術運算子以及示例:
運算子 | 描述 | 例子 |
---|---|---|
+ |
加法運算 | a + b , +a |
- |
減法運算 | a - b , -a |
* |
乘法運算 | a * b |
/ |
除法運算,結果總是返回浮點型別。 | a / b |
% |
求餘運算 | a % b |
// |
取整除,結果返回捨去小數部分的整數 | a // b |
** |
冪運算,返回 x 的 y 次方 | a ** b |
Python 算術運算子例項
下面的程式碼中是, 算術運算子用於兩個運算元的例子:
a = 24
b = 7
print('a + b =', a+b)
print('a - b =', a-b)
print('a * b =', a*b)
print('a / b =', a/b)
print('a // b =', a//b)
print('a ** b =', a**b)
a + b = 31
a - b = 17
a * b = 168
a / b = 3.4285714285714284
a // b = 3
a ** b = 4586471424
Python 比較運算子
比較運算子是用來比較兩個值大小的運算子,運算子的結果是二選一,True
或是 False
。
下面列舉出 Python 中的比較運算子:
運算子 | 描述 | 例子 |
---|---|---|
> |
大於 - 比較 a 是否大於 b |
a > b |
< |
等於 - 比較 a 是否小於 b |
a < b |
== |
等於 - 比較兩變數是否相等 | a == b |
!= |
不等於 - 比較兩變數是否不相等 | a != b |
>= |
大於等於 - 比較 a 是否大於或等於 b |
a >= b |
<= |
小於等於 - 比較 a 是否小於或等於 b |
a <= b |
Python 比較運算子例項
下面舉例來說明 Python 比較運算子的應用。
a = 12
b = 24
print('a > b is ', a>b)
print('a < b is ', a<b)
print('a == b is ', a==b)
print('a != b is ', a!=b)
print('a >= b is ', a>=b)
print('a <= b is ', a<=b)
a > b is False
a < b is True
a == b is False
a != b is True
a >= b is False
a <= b is True
Python 邏輯運算子
運算子 | 描述 | 例子 |
---|---|---|
and |
與運算 - 如果兩側邏輯都為 True ,則結果為 True ,否則為 False |
a and b |
or |
或運算 - 如果兩側邏輯有一個為 True ,則結果為 True ,否則為 False |
a or b |
not |
非運算 - 如果 a 為 True ,返回 False ; 如果 a 為 False ,返回 True |
not a |
Python 邏輯運算子例項
下面舉例來說明 Python 邏輯運算子的具體應用。
a = False
b = True
print('a and b =', a and b)
print('a or b =', a or b)
print('not b =', not b)
a and b = False
a or b = True
not b = False
Python 位運算子
Python 位運算子執行位運算,其中的運算元是執行位運算的二進位制數字。
下面列出來 Python 中所有的位運算子,為了方便說明,我們取 a = 4
(0b100
) 以及 b = 5
(0b101
):
運算子 | 描述 | 例子 |
---|---|---|
& |
位與操作符 - 當兩側數字在該位上都是 1 的時候,結果該位也為 1 ,否則為 0 |
a &b = 4 |
| |
位或操作符 - 當兩側數字在該位上只要有一個是 1 的時候,結果該位為 1 ,否則為 0 |
a | b = 5 |
~ |
位取反操作符 - 對運算元進行按位取反操作,1 變成 0 ,0 變成 1 |
~a = -5 |
^ |
位異或操作符 - 當兩側數字對應位二進位制相異時,結果為 1 |
a^b= 1 |
>> |
右移操作符 - 將 >> 左側的數字右移若干位,左側補齊 0 |
a >>2= 1 |
<< |
左移操作符 - 將 >> 左側的數字左移若干位,右側補 0 ,左側高位數捨棄 |
a<< 2 =16 |
Python 賦值運算子
賦值運算子 =
為變數分配數值。賦值運算子對變數進行初始化,比如 x = 1
將數值 1
賦值給變數 x
。
在 Python 中, 有複合賦值運算子, 它們是將算術運算子和賦值運算子相組合, 或者是將按位和賦值運算子相組合。
比如,x += 2
就是一個複合賦值語句, 其中 2 與變數 x
相加, 結果儲存在變數 x
中。
下面是賦值運算子以及複合賦值運算子的列表。
運算子 | 例子 | 等效於 |
---|---|---|
= |
a = 8 |
a = 8 |
+= |
a += 8 |
a = a + 8 |
-= |
a -= 8 |
a = a - 8 |
*= |
a *= 8 |
a = a * 8 |
/= |
a /= 8 |
a = a / 8 |
%= |
a %= 8 |
a = a % 8 |
/= |
a /= 8 |
a = a / 8 |
*= |
a *= 8 |
a = a * 8 |
&= |
a &= 8 |
a = a & 8 |
` | =` | `a |
^= |
a ^= 8 |
a = a ^ 8 |
>>= |
a >>= 8 |
a = a >> 8 |
<<= |
a <<= 8 |
a = a << 8 |
Python 特殊運算子
在 Python 程式設計中, 有一些運算子具有特殊的含義, 稱為特殊運算子, 例如身份運算子以及成員運算子等。In Python
身份運算子
在 Python 中, 運算子 is
和 is not
被稱為身份運算子。身份運算子用於確定兩個變數是否是記憶體的同一部分。所以兩個變數是相等的, 兩個變數是相同的是兩個不同的語句。兩個變數假如具有相同的數值,那它們兩個數值相等,但並不是同一個 Python 物件。
運算子 | 描述 |
---|---|
is |
兩個變數具有相同的記憶體位置 |
is not |
兩個變數不是指向相同的記憶體位置 |
Python 身份運算子例項
下面具體來說明下 Python 身份運算子的含義,
>>> a = [1]
>>> b = [1]
>>> c = a
>>> a is b
False
>>> a is c
True
a
和 b
雖然具有相同的資料,都是列表 [1]
,但它們指向的不是同一個記憶體物件,所以 a is not b
。但 c=a
將 a
的記憶體地址賦予了 c
的記憶體地址,所有它們指向了同一個 Python 物件,所以 a is c
是成立的。你可以用 id(x)
內建函式來具體檢視變數的記憶體地址
>>> id(a), id(b), id(c)
(87402760L, 87404296L, 87402760L)
從結果也能看出來,a
和 c
具有相同的記憶體地址,並且同 b
不同。
Python 成員運算子
在 Python 中,運算子 in
和 not in
被稱為成員運算子。成員運算子用於檢查變數是否位於序列(列表,元組,字串和字典)中。所以兩個變數相等並且兩個變數相同是兩個不同的語句。
對 Python 字典進行運算子操作的時候,它只能檢查字典中的鍵,而不是檢查值。
運算子 | 描述 |
---|---|
in |
當 in 前面的變數在後面的序列中時,結果為 True |
not in |
當 in 前面的變數不在後面的序列中時,結果為 True |
Python 成員運算子例項
>>> a = 'Python Programming'
>>> print('y' in a)
True
>>> print('b' not in a)
True
>>> print('b' in a)
False
>>> x = {1:2;3:4}
>>> 1 in a
True
>>> 2 in a
False
y
存在於序列 a
(字串)中,因此 y in a
返回 True。類似地,b
不存在 a
中,所以返回 False
。
字典 x
具有兩個鍵 1
和 3
,它們的值分別是 2
和 4
。1
是字典的鍵,所以 1 in a
成立;雖然 2
是字典中某個鍵的值,但並不是鍵,所以 2 in a
並不成立。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn