今天去面試一家公司,他們出的面試考題裡有問到 ** ,之前有看過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 |