运算符
算术运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| + | 加:对两个可相加对象进行加法运算,并返回结果 | a = 10 b = 20 => a+b = 30 |
| - | 减:对两个可相减对象进行加法运算,并返回结果 | a = 10 b = 20 => b-a = 10 |
| * | 乘:对两个可相乘对象进行加法运算,并返回结果 | a = 10 b = 20 => a*b = 200 |
| / | 除:对两个可相除对象进行加法运算,并返回结果 | a = 10 b = 20 => b/a = 2 |
| % | 取模:返回除法的余数 | a = 10 b = 20 => b%a = 0 |
| ** | 幂:返回乘方的结果 | a = 2 b = 4 => a**b = 16 |
| // | 取整除:返回商的整数部分 | a = 2 b = 5 => b%a = 2 |
关系运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于:比较两个可比较对象是否相等,并返回布尔结果 | a = 10 b = 20 => a==b 返回 false |
| != | 不等于:比较两个可比较对象是否不相等,并返回布尔结果 | a = 10 b = 20 => a!=b 返回 true |
| > | 大于:比较对象A是否大于对象B,并返回布尔结果 | a = 10 b = 20 => a > b 返回 false |
| < | 小于:比较对象A是否小于对象B,并返回布尔结果 | a = 10 b = 20 => a < b 返回 true |
| >= | 大于等于:比较对象A是否大于等于对象B,并返回布尔结果 | a = 10 b = 20 => a >= b 返回 false |
| <= | 小于等于:比较对象A是否小于等于对象B,并返回布尔结果 | a = 10 b = 20 => a <= b 返回 true |
赋值运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 简单赋值运算:将=右边变量赋值给=左边变量 | a = 10 => b = a, b = 10 |
| += | 加法赋值运算 | b += a 等效于 b = b + a |
| -= | 减法赋值运算 | b -= a 等效于 b = b - a |
| *= | 乘法赋值运算 | b *= a 等效于 b = b * a |
| /= | 除法赋值运算 | b /= a 等效于 b = b / a |
| %= | 取模赋值运算 | b %= a 等效于 b = b % a |
| **= | 幂赋值运算 | b **= a 等效于 b = b ** a |
| //= | 取整除赋值运算 | b //= a 等效于 b = b // a |
逻辑运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| and | 布尔与:a and b, 若a为false,a and b返回 false, 否则返回b的计算值 | a = 10 b = 20 => a and b 返回20 |
| or | 布尔或:a or b, 若a为非0,a or b返回 a 的值, 否则返回 b 的计算值 | a = 10 b = 20 => a or b 返回10 |
| not | 布尔非:not a, 若 a 为 true, 返回false,否则返回true | not a / not b 返回 false |
布尔与
- 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
- 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
- 如果布尔上下文中的某个值为假,则 and 返回第一个假值
布尔或
- 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
- 使如果所有的值都为假,or 返回最后一个假值
- 使注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值
布尔非
- 结合了前面的两种语法,推理即可。
- 为加强程序可读性,最好与括号连用,例如: (1 and ‘x’) or ‘y’
位运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| & | 按位与运算:参与运算的两对应位都为1,则该位返回1,否则返回0 | a = 60 b = 13 => a & b = 12 (0000 1100) |
| | | 按位或运算:参与运算的两对应位有一个为1,则该位返回1,否则返回0 | a = 60 b = 13 => a | b = 61 (0011 1101) |
| ^ | 按位异或:参与运算的两对应位相异时,则该位返回1,否则返回0 | a = 60 b = 13 => a ^ b = 49 (0011 0001) |
| ~ | 按位取反运算:参与运算的数每位取反,即0、1互换 | a = 60 => ~a = -61 (1100 0011)有符号二进制数的补码形式 |
| << | 左移运算:参与运算的数每位向左移动若干位,高位丢弃,低位补0 | a = 60 => a << 2 = 240 (1111 0000)) |
| >> | 右移运算:参与运算的数每位向右移动若干位,高位补0,低位丢弃 | a = 60 => a >> 2 = 15 (0000 1111)) |
- tips
~ 举例: ~5 = -6 解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110
成员运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| in | 如果在指定的序列中找到则返回true,否则false | a = ‘yang’ b = ‘ya’ => b in a, 返回true |
| not in | 如果在指定的序列中找不到则返回true,否则false | a = ‘yang’ b = ‘ay’ => b not in a, 返回true |
身份运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| is | 判断两个变量是不是引用自同一个对象 | a is b => 若 id(a) == id(b), 则返回1 |
| is not | 判断两个变量是不是引用自不同对象 | a is not b => 若 id(a) != id(b), 则返回1 |
运算符优先级(由低到高)
| 运算符 | 描述 |
|---|---|
| lambda | Lambda表达式 |
| or | 布尔’或’ |
| and | 布尔’与’ |
| not x | 布尔’非’ |
| in,not in | 成员运算 |
| is,is not | 身份运算 |
| <,<=,>,>=,!=,== | 比较运算 |
| | | 按位或 |
| ^ | 按位异或 |
| & | 按位与 |
| <<,>> | 位运算 |
| +,- | 加法与减法 |
| *,/,% | 乘法、除法与取余 |
| +x,-x | 正负号 |
| ~x | 按位翻转(取补码) |
| ** | 指数 |
| x.attribute | 属性参考 |
| x[index] | 下标 |
| x[index:index] | 寻址段 |
| f(arguments…) | 函数调用 |
| (experession,…) | 绑定或元组显示 |
| [expression,…] | 列表显示 |
| {key:datum,…} | 字典显示 |
| ‘expression,…’ | 字符串转换 |
重要运算符说明
join和符号”+“区别
- “+”
我们知道在python中,字符串是不可变数据类型。所以当多个字符串利用”+”进行拼接时,会每次都做一次申请内存的操作,并将拼接后的字符串存入新内存中。 - join
与”+”不同,join操作时会先计算字符操作所用到的空间总和大小,之后将需要拼接的所有字符串一次性都拼接完成存入新内存中。这就比”+”节省了每次申请新内存的时间。
is和”==“区别
- “==”
用来比较两个对象的值是否相同。 - is
用来比较对象所处的内存地址是否相同。
