运算符
在Python3中运算符分为:算数运算符、比较运算符(关系运算符)、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符
算数运算符除了数学中常用的、、、以外,还有几个特殊运算符,下面我们一起来看一下。
定义两个变量 :a = 10 , b = 20;
| 运算符 | 描述 | 算式 | 输出结果 |
|---|---|---|---|
| + | 加法:两个对象相加 | print(a+b) | 20 |
| - | 减法:两个对象相减 | print(a-b) | -10 |
| * | 乘法:两个对象相乘 或者一个字符串重复n次 |
print(a*b) print('ABC'*a) |
200 输出10遍ABC |
| / | 除法:两个对象相除 | print(a/b) print(b/a) |
0.5 2.0 |
| % | 求余:两数相除,没有被整除的值 | print(a/3) print(a/4) print(a/8) |
a / 3 = 3····1,最后结果是1 a/ 4 = 2····2,最后结果是2 |
| // | 取整,两数相除,取整除部分的值 | print(a//7) | 10 // 7 = 1····3,最后结果是1 |
| ** | 幂:返回x的y次方 | print(a**b) | 返回10的20次方 100000000000000000000 |
比较运算符
定义两个变量 :a = 10 , b = 20;
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| == | 等于:用于比较两边数据是否相等 | print(a == b) | False | 10 == 20 |
| != | 不等于:用于比较两边数据是否不相等 | print(a != b) | True | 10 != 20 |
| <> | 不等于:python3已废弃 | print(a<>b) | True | 10 <> 20 |
| > | 大于:用于比较>左边的数值是否比右边的大 | print(a>b) | False | 10>20 |
| < | 小于:用于比较<左边的数值是否比右边的小 | print(a<b) | True | 10<20 |
| <= | 大于等于:用于比较>=左边的数值是否大于或等于右边的数 | print(a>=b) | False | 10>=20 |
| >= | 小于等于:用于比较<=左边的数值是否小于或等于右边的数 | print(a<=b) | True | 10<=20 |
赋值运算符
定义两个变量 :a = 10 , b = 20 , c = 30;
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| = | 基本的赋值运算符 | c = a + b | 30 | 将a+b的结果赋值给c |
| += | 加法赋值运算符 | c+=a 等效于 c = c+a | 40 | c=30+10=40 |
| -= | 减法赋值运算符 | c-=a 等效于 c = c-a | 20 | c=30-10=20 |
| *= | 乘法赋值运算符 | c*=a 等效于 c = c*a | 300 | c=30*10=300 |
| /= | 除法赋值运算符 | c/=a 等效于 c = c/a | 3 | c=30/10=3 |
| %= | 取余赋值运算符 | c%=a 等效于 c = c%a | 0 | c=30%10=0 |
| //= | 取整赋值运算符 | c//=a 等效于 c = c//a | 3 | c=30//10=3 |
| **= | 幂赋值运算符 | c**=a 等效于 c = c**a | 5.940e+14 | c=30**10=5.9049e+14 |
逻辑运算符
定义两个变量 :a = 10 , b = 20 , C = False;
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| and | 布尔“与”:如果a的值为布尔类型的False,或者0,时返回False,否则返回b的计算值 | a and b | 20 | 10 and 20 ,前者不为0或者False,所以返回y的计算值20 |
| or | 布尔“或”:如果 a 是 True,它返回 a 的值,否则它返回 b 的计算值。 | a or b | 10 | 10 or 20,前者不为0或False,所以返回前者的值10 |
| not | 布尔“非”:对结果取反,如果c=True,结果就是 False,如果 x 为 False,结果就是 True。 | not c | True | c是False,取反变成True |
位运算符
位运算符是把数字看作二进制来进行计算的。
二进制数,一般由1或0组成的八位数,不够的高位补零
如何求二进制,当前数/2,如果可以整除当前位是0,继续/2,不能整除,当前位是1,当前数-1再/2。一直得到结果为0结束,二进制就是余数的逆序。
0011 1100,13的二进制为00001101
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则当前位的结果为1,否则为0 | a&b | 12 | 0000 1100 |
| | | 按位或运算符:参与运算的两个值,相对应位只要有一个是1,则当前位结果为1,否则为0 | a|b | 61 | 0011 1101 |
| ^ | 按位异运算符:两个对应的二进制位不同的时候,结果为1 | a^b | 49 | 00110001 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | ~a | -61 | 1100 0011 |
| << | 左移动运算符:运算数的二进制的每一位都向左移动指定位数,由<<右边的数指定,高位丢弃,低位补零。 |
a<<2 | 240 | 二进制数由0011 1100,变成1111 0000,把所有数向左移动两位 |
| >> | 右移动运算符:运算数的二进制的每一位都向右移动指定位数,由>>右边的数指定,低位丢弃,高位补零。 |
a>>2 | 15 | 二进制数由0011 1100,变成0000 1111,把所有数向右移动两位 |
成员运算符
定义变量a = 60,b = 13,list = [1,2,3,4,5];
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| in | 如果在指定序列中找到值返回True,否则返回False | a in list | False | 变量a的值是60,不存在于list内 |
| not in | 与in相反,如果在指定序列中找不到值返回True,否则返回False |
a not in list | True |
身份运算符
身份运算符用于比较两个对象的存储单元
定义变量a = 60,b = 13,c = a;
| 运算符 | 描述 | 算式 | 返回结果 | 解释 |
|---|---|---|---|---|
| is | 判断两个标符是不是引用自同一个对象,是则返回True | a is c | True | 变量赋值变量的时候,其实就是把指针指向同一个数据,所以a,c是同一个对象 |
| is not | 与is相反,判断两个标符是不是引用自同一个对象,不是则返回True |
a is not b | True | a,b是分别定义的两个变量,肯定不是同一引用 |
还有一种情况
a = 1
c = 1
print(a is c) #输出结果:True
运算符优先级(从上至下)
| 运算符 | 描述 |
|---|---|
| ** | 幂(最高优先级) |
| ~ | 按位翻转 |
| * / % // | 乘、除、取余、取整 |
| + - | 加、减法 |
| << >> | 左移、右移运算符 |
| & | 位“与” |
| ^| | 位运算符 |
| < <= > >= | 比较运算符 |
| == != | 等于运算符 |
| = += -= *= /= //=%= **= | 赋值运算符 |
| is / is not | 身份运算符 |
| in / not in | 成员运算符 |
| not / and / or | 逻辑运算符 |
小结
大体运算符分为以下几类:
- 算数运算符
- 关系(比较)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
运算符之间有优先级,在任何条件下按照优先级顺序执行