Python运算符

运算符

算术运算符

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