运算符
算术运算符
运算符 | 描述 | 示例 |
---|---|---|
+ | 加:对两个可相加对象进行加法运算,并返回结果 | 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
用来比较对象所处的内存地址是否相同。