第四篇学习笔记,内容围绕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
6 bool([])
False
123) bool(
True
1: 2}) bool({
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
1210 a =
20 b =
and b a
20
0 a =
and b a
0
10, 0 a, b =
and b a
0
1, 2, 3] and {1: 2} [
{1: 2}
or运算
or
运算返回的值以运算时出现的第一个逻辑值为True
的对象为主。如果两个运算数都是False
那么就返回最后那个对象。如:1
2
3
4
5
6
7
8
9
10
11
1210 a =
20 b =
or b a
10
0 a =
or b a
20
10, 0 a, b =
or b a
10
1, 2, 3] or {1: 2} [
[1, 2, 3]
not运算
not
运算返回的值只是逻辑值,也即,它仅对运算数的逻辑值进行取反的操作。如:1
2
310 a =
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运算(在后续笔记中提及) |
= |
赋值运算 |