1 算数运算符
算数运算符,就是数学上面的基本的运算符:加
+
、减-
、乘*
、除/
、幂**
、取余%
以及取整//
运算符 | 描述 | 例子 |
---|---|---|
+ | 可用于数字、序列等类型数据操作,对于数字类型就是求和;其他类型表示连接操作 | a + b |
- | 减法运算符,用于求差 | a - b |
* | 可用于数字、序列等类型数据操作,对于数字类型就是求积;其他类型表示重复操作 | a * b |
/ | 除法运算符,用于求商 | a / b |
% | 取余运算符,用于求余数 | a % b |
** | 幂运算符,用于求幂 | a ** b |
// | 取整运算符,求小于商的最大整数 | a // b |
基本的运算:
>>> 1 + 2
3
>>> 'hello' + 'world'
'helloworld' # 将前后两个字符串进行拼接
>>> 'hello' + 2 # can only concatenate str (not "int") to str
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> 2 - 1
1
>>> 2 * 3
6
>>> 'hello' * 2
'hellohello' # * 几就是重复几遍
>>> 3 / 2
1.5
>>> 3 % 2
1
>>> 3 ** 2
9
>>> 3 // 2
1
注:python在进行除法运算的时候会自动将数转换为双精度浮点型来进行计算,以防止结果精度的丢失,那怕你可以整除,也会先行转换,再运算,结果返回一个float,所以如果需要一个整型可以使用//
,它会去除结果的小数,返回一个int;但要求//
左右都要为int型,有一个float型的数,结果也为float
>>> 4 / 2
2.0
>>> type(4 / 2)
<class 'float'>
>>> 4 // 2
2
>>> 4 // 2.0
2.0
2 关系运算符
运算符 | 说明 | 例子 |
---|---|---|
== | 用于判断两边的内容是否相等 | a == b |
!= | 用于判断两边的内容是否不相等 | a != b |
> | 用于判断左边的值是否大于右边 | a > b |
< | 用于判断左边的值是否小于右边 | a < b |
>= | 用于判断左边的值是否大于等于右边 | a >= b |
<= | 用于判断左边的值是否小于等于右边 | a <= b |
判断数值是,关系运算符主要判断其值的关系,判断字符串类型的时候是逐个判断字符的ASCII码值,相等继续下一个,直到出现不相等,全部相等则两个字符串相同
>>> a = 1
>>> b = 2
>>> 1.0 == a
True
>>> 1.0 != a
False
>>> a > b
False
>>> a < b
True
>>> a >=b
False
>>> a <= b
True
>>> a = 'hello'
>>> b = 'hello'
>>> a == b
True
>>> a == 'hello1'
False
>>> a > b
False
>>> a < b
False
python还提供了连续比较运算 例如:a > b > c
,相当于a > b and b > c
( 两个比较加加上逻辑运算符)
3 逻辑运算符
python支持逻辑运算符,但是python取消了传统的与
&&
、或||
、非!
,取而代之的是and or not
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
and | 逻辑与 | 当两边同为True,才返回True | a and b |
or | 逻辑或 | 只要两边有一个为True,就返回True | a or b |
not | 逻辑非 | 右边值为True,返回False,反则反之 | not a |
注:and
操作符拥有短路的功能,即遇到False就直接结束判断
>>> bool(print(1))
1
False
>>> print(1) and print(2)
1
>>> print(1) or print(2)
1
2
4 位运算符
位运算就是将数字看出二进制来进行计算。
-
&(按位与运算符)
-
语法:a & b
-
作用:将a, b对应的二进制数的对应位进行与运算
- 与运算: 有0返回0,全1返回1
-
例子:
>>> 25 & 30 24 计算过程: 25 --> 0001 1001 30 --> 0001 1110 0001 1001 & 0001 1110 --------------- 0001 1000 ----> 24
-
-
| (按位或)运算符
-
语法:a | b
-
作用:将a, b对应的二进制数的对应位进行或运算
- 或运算:有1返回1,全0返回0
-
例子:
>>> 25 | 30 31 计算过程: 25 --> 0001 1001 30 --> 0001 1110 0001 1001 | 0001 1110 --------------- 0001 1111 ----> 31
-
-
~(位反运算符)
-
语法:~a
-
作用:将a对应的二进制数按位取反
- 取反:0变1,1变0
-
例子:
>>> ~10 -11 计算过程: 10 --> 0000 1010 ~ 0000 1010 --------------- 1111 0101 --> 469 ? -11
解释,为什么
~10
结果是-11而不是469:在计算机中符号数有三种表示方式:原码、补码和反码。这三种表示方式都有符号位和数值位两部分,符号位0表示"正",1表示"负",而数值位,表示方式都不一样。在计算机系统中,数值一律使用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
正数的补码与其原码相同,负数的补码是其原码所有位取反后加一
1111 0101 原码 --> 469 补码 --> -11
-
-
^(异或运算符)
-
语法:a ^ b
-
作用:将a, b对应的二进制数的对应位进行异或运算
- 异或运算:相同为0,不同为1
-
例子
>>> 5 ^ 9 12 计算过程: 5 --> 0000 0101 9 --> 0000 1001 0000 0101 ^ 0000 1001 -------------- 0000 1100 ---> 12
-
-
<<(左移运算符)
-
语法:a << b
-
作用:将a对应的二进制数向左移动b位,低位补0
-
例子:
>>> 3 << 2 12 计算过程: 3 --> 0000 0011 0000 0011 << 2 0000 1100 ---> 12
-
-
>>(右移运算符)
-
语法:a >> b
-
作用:将a对应的二进制数(补码)向右移动b位,高位补符号位,
-
例子:
>>> -3 >> 2 -1 计算过程: -3 --> 1111 1101(补码) 1111 1101 >> 2 --------------- 1111 1111(补码) ----> -1
-
5 赋值运算符
众所周知,
=
表示赋值,将=
右边的表达式的值,赋给左边python中赋值运算符是以
=
为基础进行的一些拓展
运算符 | 名称 | 例子 | 说明 |
---|---|---|---|
+= | 加赋值 | a += b | 相当于 a = a + b |
-= | 减赋值 | a -= b | 相当于 a = a -b |
*= | 乘赋值 | a *= b | 相当于 a = a * b |
/= | 除赋值 | a /= b | 相当于 a = a / b |
%= | 取余赋值 | a %= b | 相当于 a = a % b |
**= | 幂赋值 | a **= b | 相当于 a = a ** b |
//= | 地板除赋值 | a //= b | 相当于 a = a // b |
&= | 位与赋值 | a &= b | 相当于 a = a & b |
|= | 位或赋值 | a |= b | 相当于 a = a | b |
^= | 位异或赋值 | a ^= b | 相当于 a = a ^ b |
<<= | 左移赋值 | a <<= b | 相当于 a = a << b |
>>= | 右移赋值 | a >>= b | 相当于 a = a >> b |
6 其他运算符
6.1 成员运算符 (in
与 not in
)
成员运算符是python中特有的运算符(全小写),用于判断对象是否是某个集合中的元素之一,好用且运行速度快,返回布尔值
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回True ,否则返回False。 |
not in | 如果在指定的序列中没有找到值返回True,否则返回False。 |
6.2 身份运算符(is
与 not is
)
这也是python中特有的运算符
运算符 | 描述 |
---|---|
is | 判断两个标识符是不是引用自同一个对象 |
not is | 判断两个标识符是不是引用自不同对象 |
注:is
与not is
主要是对判断对象是否为同一个对象类似于id(a) == id(b)、id(a) != id(b)
6.3 三目运算符(三元表达式)
python中的三元表达式同样有自己的特殊,不同与其他语言的
表达式?为真返回:为假返回
python中的格式是:
为真时返回 if 表达式 else 为假时返回
7 运算符优先级(从上到下优先级降序)
运算符 | 描述 |
---|---|
() | 括号中的优先运算(最高优先级运算符) |
function() | 函数调用 |
[star_index : end_index], [start_index : end_index, step] | 切片 |
[index] | 下标 |
. | 引用类成员 |
** | 指数运算符 |
~、+(正)、-(负) | 位反、正负号 |
*、/、%、// | 乘、除、取余、取整 |
+(加)、-(减) | 加、减 |
<<、>> | 位移运算 |
& | 位与 |
^ | 位异或 |
| | 位或 |
>、<、<= 、>= | 比较运算符 |
<>、==、!= | 等于运算符 |
=、/=、*=、… | 赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
and、or 和 not | 逻辑运算符 |