

# 运算符（draft）

## Python算术运算符

|运算符|描述|
|:-|:-|
|`+`|加(两个对象相加)|
|`-`|减|
|`*`|乘(两个数相乘或是返回一个被重复若干次的序列)|
|`/`|除 |
|`%`|取模(返回除法的余数)|
|`**`|幂|
|`//`|取整除 |

## Python比较运算符

`==`    
`<=`   
`<`       
`>=`     
`>`    
`!=`

返回布尔值（True/False）

## Python赋值运算符

|运算符|描述|实例|
|:-|:-|:-|
|`=`|简单的赋值运算符|$c = a + b$ 将 $a + b$ 的运算结果赋值为$c$|
|`+=`|加法赋值运算符|`c += a` 等效于 `c = c + a`|
|`-=`|减法赋值运算符|`c -= a `等效于 `c = c - a`|
|`*=`|乘法赋值运算符|`c *= a` 等效于 `c = c * a`|
|`/=`|除法赋值运算符|`c /= a `等效于 `c = c / a`|
|`%=`|取模赋值运算符|`c %= a` 等效于 `c = c % a`|
|`**=`|幂赋值运算符|`c **= a` 等效于 `c = c ** a`|
|`//=`|取整除赋值运算符|`c //= a` 等效于 `c = c // a`|

## Python位运算符
按位运算符是把数字看作二进制来进行计算的。

|运算符|描述|
|:-|:-|
|`&`|按位与运算符：参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0|
|$\mid$|按位或运算符：只要对应的二个二进位有一个为1时，结果位就为1。|
|`^`|按位异或运算符：当两对应的二进位相异时，结果为1 |
|`~`|按位取反运算符：对数据的每个二进制位取反,即把1变为0,把0变为1。`~x` 类似于 `-x-1`| 
|`<<`|左移动运算符：运算数的各二进位全部左移若干位，由"`<<`"右边的数指定移动的位数，高位丢弃，低位补0。|
|`>>`|右移动运算符：把"`>>`"左边的运算数的各二进位全部右移若干位，"`>>`"右边的数指定移动的位数 |

## Python逻辑运算符

|运算符|逻辑表达式|描述|
|:-|:-|:-|
|`and`|`x and y`|布尔"与" (如果 x 为 False，x and y 返回 False，否则它返回 y 的计算值。) |
|`or`|`x or y`|布尔"或" ($如果 x 是 True，它返回 x 的值，否则它返回 y 的计算值。$)|
|`not`|`not x`|布尔"非" ($如果 x 为 True，返回 False 。如果 x 为 False，它返回 True。$) |
注意：`and`  `or` 惰性求值

## Python成员运算符

|运算符|描述|
|:-|:-|
|`in`|如果在指定的序列中找到值返回 `True`，否则返回 `False`。|
|`not in`|如果在指定的序列中没有找到值返回 `True`，否则返回 `False`。|

## Python身份运算符
身份运算符用于比较两个对象的存储单元

|运算符|描述|实例|
|-|:-|:-|
|`is`|判断两个标识符是不是引用自一个对象|`x is y`, 类似 `id(x) == id(y)` , 如果引用的是同一个对象则返回 True，否则返回 False|
|`is not`|判断两个标识符是不是引用自不同对象|`x is not y` ， 类似 `id(a) != id(b)`。如果引用的不是同一个对象则返回结果 True，否则返回 False。| 
注：`id()`函数用于获取对象内存地址。

## Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符：

|运算符|描述|
|:-|:-|
|`**`|指数 (最高优先级)|
|`~` `+`  `-`|按位翻转, 一元加号和减号 (最后两个的方法名为 `+@ `和 `-@`)|
|`*` `/` `%` `//`|乘，除，取模和取整除|
|`+`  `-`|加法 减法|
|`>>` `<<`|右移，左移运算符|
|`&`  |位 'AND'|
|`^`   $\mid$|位运算符|
|`<=`  `<`  `>`  `>=`|比较运算符|
|`<>` `==` `!=`|等于运算符|
|`=` `%=` `/=` `//=` `-=` `+=` `*=` `**=`|赋值运算符|
|`is` `is not`|身份运算符|
|`in`  `not in`|成员运算符|
|`not`  `or and`|逻辑运算符|
