typora/note/Python/运算符.md
2024-12-12 10:48:55 +08:00

126 lines
9.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 算术运算符
| 运算符 | 描述 | 实例 |
| :----- | :---------------------------------------------- | :-------------------------------------- |
| + | 加 - 两个对象相加 | a + b 输出结果 31 |
| - | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 11 |
| * | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
| / | 除 - x 除以 y | a / b 输出结果 2.1 |
| % | 取模 - 返回除法的余数 | a % b 输出结果 1 |
| ** | 幂 - 返回 x 的 y 次幂 | a ** b 为 21 的 10 次方 |
| // | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
### 比较运算符
| 运算符 | 描述 | 实例 |
| :----- | :---------------------------------- | :-------------------- |
| == | 等于 -- 比较对象是否相等 | (a == b) 返回 False。 |
| != | 不等于 -- 比较两个对象是否不相等 | (a != b) 返回 True. |
| > | 大于 -- 返回 x 是否大于 y | (a > b) 返回 False。 |
| < | 小于 -- 返回 x 是否小于 y。 | (a < b) 返回 True |
| >= | 大于等于 -- 返回 x 是否大于等于 y。 | (a >= b) 返回 False。 |
| <= | 小于等于 -- 返回 x 是否小于等于 y。 | (a <= b) 返回 True。 |
### 赋值运算符
| 运算符 | 描述 | 实例 |
| :----- | :----------------------------------------------- | :----------------------------------------------------------- |
| = | 简单的赋值运算符 | 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 |
| := | 海象运算符,计算结果赋值给一个变量,防止重复运算 | my_list = [1, 2, 3, 4, 5] <br>if (length := len(my_list)) > 0:<br/> print(f"列表中有{length}个元素!") |
### 位运算符
| 运算符 | 描述 | 实例 |
| :----: | :----------------------------------------------------------- | :-------------------------------------------- |
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| \| | 按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为 1。 | (a \| b) 输出结果 61 ,二进制解释: 0011 1101 |
| ^ | 按位异或运算符:当两对应的二进位相异(不同)时,结果为 1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把 1 变为 0把 0 变为 1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011 |
| << | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补 0。 | a << 2 输出结果 240 二进制解释 1111 0000 |
| >> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
- 与运算都是1才是1
- 或运算有1就是1
- 异或运算相同为0不同位1
- 左移一位 = 乘2
- 右移一位 = 除2取整
| | 按位与运算a&b | 按位或运算(a\|b) | 按位异或a^b |
| :-----------------: | :---------------: | :--------------: | :-------------: |
| a60的二进制表示 | 0011 1100 | 0011 1100 | 0011 1100 |
| b13的二进制表示 | 0000 1101 | 0000 1101 | 0000 1101 |
| 运算结果 | 0000 1100 | 0011 1101 | 0011 0001 |
| 结果的十进制表示 | 12 | 61 | 49 |
| | 按位取反(~a | 左移a<<2 | 右移(a>>2) |
| :------------------: | :------------: | :----------: | :--------: |
| a60的二进制表示 | 0011 1100 | 0011 1100 | 0011 1100 |
| 运算结果 | 1100 0011 | 1111 0000 | 0000 1111 |
| 运算结果的十进制表示 | -61 | 240 | 15 |
### 逻辑运算符
- a = 10
- b = 20
| 运算符 | 逻辑表达式 | 描述 | 实例 |
| :----- | :--------- | :----------------------------------------------------------- | :---------------------- |
| and | x and y | 布尔"与" - 如果 x 为 Falsex and y 返回 False否则它返回 y 的计算值。 | (a and b) 返回 20。 |
| or | x or y | 布尔"或" - 如果 x 是 True它返回 x的值否则它返回 y 的计算值。 | (a or b) 返回 10。 |
| not | not x | 布尔"非" - 如果 x 为 True返回 False 。如果 x 为 False它返回 True。 | not(a and b) 返回 False |
### 成员运算符
| 运算符 | 描述 | 实例 |
| :----- | :------------------------------------------------------ | :------------------------------------------------ |
| in | 如果在指定的序列中找到值返回 True否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
| not in | 如果在指定的序列中没有找到值返回 True否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
### 身份运算符
| 运算符 | 描述 | 实例 |
| :----- | :------------------------------------------ | :----------------------------------------------------------- |
| is | is 是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , **is** 返回结果 True |
| is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). **is not** 返回结果 True |
### 运算符优先级
| 运算符 | 描述 |
| :----------------------------------------------------------- | :--------------------------------- |
| `(expressions...)`,`[expressions...]`, `{key: value...}`, `{expressions...}` | 圆括号的表达式 |
| `x[index]`, `x[index:index]`, `x(arguments...)`, `x.attribute` | 读取,切片,调用,属性引用 |
| await x | await 表达式 |
| `**` | 乘方(指数) |
| `+x`, `-x`, `~x` | 正,负,按位非 NOT |
| `*`, `@`, `/`, `//`, `%` | 乘,矩阵乘,除,整除,取余 |
| `+`, `-` | 加和减 |
| `<<`, `>>` | 移位 |
| `&` | 按位与 AND |
| `^` | 按位异或 XOR |
| `|` | 按位或 OR |
| `in,not in, is,is not, <, <=, >, >=, !=, ==` | 比较运算,包括成员检测和标识号检测 |
| `not x` | 逻辑非 NOT |
| `and` | 逻辑与 AND |
| `or` | 逻辑或 OR |
| `if -- else` | 条件表达式 |
| `lambda` | lambda 表达式 |
| `:=` | 赋值表达式 |