第四篇学习笔记,内容围绕Python除数学运算外的其他运算。
比较运算
比较运算符包括==,!=,>,<,>=,<=。
比较运算符和大多数编程语言一样,和数学上的意义也相近,在此不做过多的解释。但python中比较运算符的连接则和大多数语言不同,python支持多个比较运算符之间的多次连接,如:1
2
3
41 < 2 > 1 < 2 > 1 < 2 > 1
True
3 >= 2 >= 1 >= 0
True
位运算
位运算对数字的二进制位进行计算。python中位运算包含&,|,~,^,>>,<<六种,分别对应与,或,取反,异或,右移和左移。具体在此不做介绍。
python中的移位是算术移位。如:1
2
3
4(-1) >> 10
-1
(-1) << 10
-1024
逻辑运算
逻辑运算符包含and, or和not三个。
逻辑值
python中任何数据类型都有对应的逻辑值。只要数据类型非零(非空)就是True,否则就是False。
可以使用bool()函数取得某一个对象的逻辑值。如:1
2
3
4
5
6bool([])
False
bool(123)
True
bool({1: 2})
True
逻辑值参与数值运算的时候,True视作1,False视作0。如True * True + False - True为1。
逻辑运算符
一般情况下,python中逻辑运算符都对逻辑值进行运算,但运算结果不仅限于True和False。
and运算
and运算返回的值以运算时出现的第一个逻辑值为False的对象为主。如果两个运算数都不是False那么就返回最后那个对象。如:1
2
3
4
5
6
7
8
9
10
11
12a = 10
b = 20
a and b
20
a = 0
a and b
0
a, b = 10, 0
a and b
0
[1, 2, 3] and {1: 2}
{1: 2}
or运算
or运算返回的值以运算时出现的第一个逻辑值为True的对象为主。如果两个运算数都是False那么就返回最后那个对象。如:1
2
3
4
5
6
7
8
9
10
11
12a = 10
b = 20
a or b
10
a = 0
a or b
20
a, b = 10, 0
a or b
10
[1, 2, 3] or {1: 2}
[1, 2, 3]
not运算
not运算返回的值只是逻辑值,也即,它仅对运算数的逻辑值进行取反的操作。如:1
2
3a = 10
not a
False
成员运算符
成员运算符用于测试给定的一个对象是否是另一个对象的“成员”,即,是否包含在另一个对象之中。
成员运算符只有两种:in和not in。对于x in y,如果y包含x则返回True,否则返回False。not in与in刚好相反。
身份运算符
身份运算符用于比较两个对象的存储单元(内存地址)是否同一,可以理解为“本质是否相同”。
身份运算符只有两种:is和is not。x is y类似id(x) == id(y),如果x和y引用的对象相同(即两者指向同一储存单元)则返回True,否则返回False。is not与is刚好相反。
运算优先级
根据python官方文档,python的运算符优先级如下:(从高到低优先级递减)
| 运算符 | 描述 |
|---|---|
** |
乘方运算 |
+, -, ~ |
加减法(一元),按位取反 |
*, /, //, % |
乘除法类(含取余) |
+, - |
加减法(二元) |
<<, >> |
左移,右移 |
& |
按位与 |
^ |
按位异或 |
| | | 按位或 |
in, not in, is, is not, <, <=, >, >=, !=, == |
比较运算符,身份运算符,成员运算符 |
not |
逻辑非 |
and |
逻辑与 |
or |
逻辑或 |
if-else |
三目运算符(在后续笔记中提及) |
lambda |
lambda运算(在后续笔记中提及) |
= |
赋值运算 |