今天去面試一家公司,他們出的面試考題裡有問到 ** ,之前有看過python 的符號很多次,但這個 ** 指數,實在沒什麼機會用到,還以為是使用 ^ ,查了一下 ^ 是 xor 的意思…。
結論是,又錯了好幾題,科科。
Python 提供多樣、功能完整的運算子 (operator) ,如下列表:
+ | – | * | ** | / | // | % |
<< | >> | & | | | ^ | ~ | |
< | > | <= | >= | == | != |
另有一些分隔符號 (delimiter)
( | ) | [ | ] | { | } |
, | : | . | ; | @ | = |
+= | -= | *= | /= | //= | %= |
&= | |= | ^= | <<= | >>= | **= |
依功能區分,可分為
- 算術運算子
- 位移運算子
- 位元運算子
- 關係運算子
- 指派運算子
- 分隔符號
算術運算子
Python 的算術運算子 (arithmetic operator) 包含加、減、乘、除、取餘數,皆需兩個運算元 (operand) 構成運算式 (expression) ,如下列表
運算子 | 功能 | 範例 |
---|---|---|
+ | 加 | a + b |
– | 減 | a – b |
* | 乘 | a * b |
** | 指數 | a ** b |
/ | 除 | a / b |
// | 整數除法 | a // b |
% | 取餘數 | a % b |
算術運算子可以運用在整數資料型態 (integral type) 及浮點數資料型態 (floating-point type) 。
位移運算子
位移運算子 (shifting operator) 運用在整數資料型態,向右位移等於 n 除以 pow(2, n) ,向左位移等於 n 乘上 pow(2, n)
運算子 | 功能 | 範例 |
---|---|---|
<< | 向右位移 | a << n |
>> | 向左位移 | a >> n |
位元運算子
位元運算子 (bitwise operator) 如下列表
運算子 | 功能 | 範例 |
---|---|---|
& | 位元且 | a & b |
| | 位元包含或 | a | b |
^ | 位元互斥或 | a ^ b |
~ | 位元相反 | ~a |
關係運算子
關係運算子 (comparison operator) 需要兩個運算元,如下列表
運算子 | 功能 | 範例 |
---|---|---|
< | 小於 | a < b |
> | 大於 | a > b |
<= | 小於等於 | a <= b |
>= | 大於等於 | a >= b |
== | 相等 | a == b |
!= | 不相等 | a != b |
指派運算子
Python 最基本的指派運算子 (assignment operator) 為單一個等號 = ,這是用來將等號右邊的值拷貝給給左邊的變數 (variable) 資料。等號也可以跟其他運算子合用,會直接將結果儲存到原變數之中,如
運算子 | 功能 | 範例 |
---|---|---|
= | 指派 | a = b |
+= | 相加同時指派 | a += b |
-= | 相減同時指派 | a -= b |
*= | 相乘同時指派 | a *= b |
**= | 取指數同時指派 | a **= b |
/= | 相除同時指派 | a /= b |
/= | 整數相除同時指派 | a //= b |
%= | 取餘數同時指派 | a %= b |
&= | 位元且同時指派 | a &= b |
^= | 位元互斥或同時指派 | a ^= b |
|= | 位元包含或同時指派 | a |= b |
<<= | 向左位移同時指派 | a <<= b |
>>= | 向右位移同時指派 | a >>= b |
Python 用單一等號 = 表示指派,連續兩個等 == 號表示相等性。
分隔符號
其他分隔符號有
分隔符號 | 功能 |
---|---|
( ) | 小括弧圍住的運算式會優先計算,函數 (function) 也用小括弧圍住參數列 (parameter list) |
[ ] | 序列型態 (sequence type) 的索引符號,或用作定義串列 (list) |
{ } | 用作定義字典 (dictionary) |
, | 同一行中分隔多個運算式 |
: | 控制陳述條件 (condition) 後的分隔符號 |
. | 用為存取物件的方法 (method) 或屬性 (attribute) |
; | 可作為單行程式結束的符號,也可不用 |
@ | 用作函數或類別 (class) 定義的特殊標記 |
中英文術語對照 | |
---|---|
運算子 | operator |
分隔符號 | delimiter |
算術運算子 | arithmetic operator |
運算元 | operand |
運算式 | expression |
整數資料型態 | integral type |
浮點數資料型態 | floating-point type |
位移運算子 | shifting operator |
位元運算子 | bitwise operator |
關係運算子 | comparison operator |
指派運算子 | assignment operator |
變數 | variable |
函數 | function |
參數列 | parameter list |
序列型態 | sequence type |
串列 | list |
字典 | dictionary |
條件 | condition |
方法 | method |
屬性 | attribute |
類別 | class |