Python 運算子

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *