Python——运算符及其优先级

在 Python 中,支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 逻辑(布尔)运算符
  • 位运算符
  • 赋值运算符
  • 成员运算符
  • 身份运算符

1. 算术运算符

运算符含义示例
+加:两个对象相加,或者一元加x + y
-减:两个对象相减,或得到负数x - y
*乘:两个操作数相乘,或是返回一个被重复若干次的字符串x * y
/除:两个操作数相除(总是浮点数x / y
%取模:返回除法(/)的余数x % y(x/y 的余数)
//取整除(地板除):返回商的整数部分x // y
**幂:返回 x 的 y 次幂x ** y
>>> a=10
>>> b=5
>>> print(a+b)
15
>>> print(a-b)
5
>>> print(a*b)
50
>>> print(a/b)
2.0
>>> print(a**b)
100000
>>> print(a//b)
2
>>> print(a%b)
0

2. 比较运算符

运算符含义示例
>大于:如果左操作数大于右操作数,则为 Truex > y
<小于:如果左操作数小于右操作数,则为 Truex < y
==等于:如果两个操作数相等,则为 Truex == y
!=不等于:如果两个操作数不相等,则为 Truex != y
>=大于等于:如果左操作数大于或等于右操作数,则为 Truex >= y
<=小于等于:如果左操作数小于或等于右操作数,则为 Truex <= y

 

>>> a=10
>>> b=20
>>> a==b
False
>>> a!=b
True
>>> a>b
False
>>> a<b
True
>>> a>=b
False
>>> a<=b
True

【注】在一些地方,回用 1 代表 True、0 代表 False。

3. 赋值运算符

运算符示例等价于
=x = 5x = 5(相同)
+=x += 5x = x + 5
-=x -= 5x = x - 5
*=x *= 5x = x * 5
/=x /= 5x = x / 5
%=x %= 5x = x % 5
//=x //= 5x = x // 5
**=x **= 5x = x ** 5
&=x &= 5x = x & 5
|=x |= 5x = x | 5
^=x ^= 5x = x ^ 5
>>=x >>= 5x = x >> 5
<<=x <<= 5x = x << 5
>>> a=10
>>> b=20
>>> c=0
>>> c=a+b
>>> print(c)
30
>>> c+=10
>>> print(c)
40
>>> c-=a
>>> print(c)
30
>>> c*=a
>>> print(c)
300
>>> c/=a
>>> print(c)
30.0
>>> c%=a
>>> print(c)
0.0
>>> c=a**5
>>> print(c)
100000
>>> c//=b
>>> print(c)
5000
>>> print(b)
20

 

4. 位运算符

运算符含义示例
&按位与(AND):参与运算的两个值的两个相应位都为1,则该位的结果为1;否则为0x & y
|按位或(OR):参与运算的两个值的两个相应位有一个为1,则该位的结果为1;否则为0x | y
~按位翻转/取反(NOT):对数据的每个二进制位取反,即把 1 变为 0 ,把 0 变为 1~x
^按位异或(XOR):当两个对应的二进制位相异时,结果为1x ^ y
>>按位右移 :运算数的各个二进制位全部右移若干位x >> 2
<<按位左移:运算数的各个二进制位全部左移若干位,高位丢弃,地位不补 0x << 2

 

>>> a=10           #a=0000 1010
>>> b=8            #b=0000 1000
>>> a & b          #0000 1000
8
>>> a | b          #0000 1010
10
>>> a ^ b          #0000 0010
2
>>> c=~a           #a的补码 = 原码 = 0000 1010  (0000 1010)取反 (1111 0101)
>>> print(c)       #(1111 0101)取反(0000 1010)
-11                #(0000 1010)+ (0000 0001) = (0000 1011) (前面加上负号)
>>> c=a>>2        #a=0000 1001
>>> print(c)      #c=0000 0010
2
>>> c=a<<2        #c=0010 1000
>>> print(c)
40

【注】~num 单目运算,对数的每一位取反,结果为 -(num+1)

  • 在计算机里面,负数是以补码存储的 
  • 原码求补码:取反,+1
  • 补码求原码:取反,+1
  • 取反操作是在原码上进行的!

【例】(1) 求~4, 我们用二进制来表示4: 
    4 的原码: 0000 0100 
    取反得到: 1111 1011, 观察符号,是负数,因为负数以补码存储的,所以问题转化为: 
    某个数 x 的补码是 1111 1011,求 x 的值(由补码求原码) 
    取反: 0000 0100 
    +1: 0000 0101 = 5, 加上标点符号(负号) 得到结果: -5

(2) 求 ~-5,同理用二进制表示-5: 
    因为 -5 是负数,所以它是以 5 的补码表示的,所以转化为已知 5 的补码,求对应的原码,然后在取反. 
    5补码: 0000 0101, 
    取反: 1111 1010 
    +1: 1111 1011, 得到原码 
取反: 0000 0100 = 4 ,加上标点负号(正号)得到结果:4

 

5. 逻辑运算符

运算符含义示例
andx and y逻辑与:如果 x 为 False,返回 false;否则返回 y 的计算值 
orx or y逻辑或:如果 x 是非 0,返回 x 的值;否则返回 y 的计算值 
notnot x逻辑非:如果 x 为 False,返回 True;如果 x 为 True,返回 False
>>> a=10
>>> b=20
>>> a and b
20
>>> a or b
10
>>> not a
False
>>> not -1
False
>>> not 0
True

 

6. 成员运算符

运算符含义示例
in如果在指定序列中找到值/变量,返回 True;否则返回 False5 in x
not in如果在指定序列中没有找到值/变量,返回 True;否则返回 False5 not in x
>>> a=10
>>> b=5
>>> list=[1,2,3,4,5]
>>> a in list
False
>>> a not in list
True
>>> b in list
True
>>> b not in list
False

7. 身份运算符

身份运算符用于检查两个值(或变量)是否位于存储器的同一部分。

注意: 两个变量相等,并不意味着它们也相同。

运算符含义示例
is如果操作数相同,则为 True(引用同一个对象)x is True
is not如果操作数不相同,则为 True(引用不同的对象)x is not True
>>> a= 10
>>> b= 10
>>> print(a is b)
True
>>> print(a is not b)
False
>>> b=20
>>> print(a is b)
False
>>> print(a is not b)
True

8. 运算符优先级

【注】从低到高

运算符描述
lambdaLambda表达式
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,...'字符串转换
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值