Python入门笔记(四) 其他类型运算

第四篇学习笔记,内容围绕Python除数学运算外的其他运算。

比较运算

比较运算符包括==!=><>=<=
比较运算符和大多数编程语言一样,和数学上的意义也相近,在此不做过多的解释。但python中比较运算符的连接则和大多数语言不同,python支持多个比较运算符之间的多次连接,如:

1
2
3
4
>>> 1 < 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, ornot三个。

逻辑值

python中任何数据类型都有对应的逻辑值。只要数据类型非零(非空)就是True,否则就是False
可以使用bool()函数取得某一个对象的逻辑值。如:

1
2
3
4
5
6
>>> bool([])
False
>>> bool(123)
True
>>> bool({1: 2})
True

逻辑值参与数值运算的时候,True视作1,False视作0。如True * True + False - True为1。

逻辑运算符

一般情况下,python中逻辑运算符都对逻辑值进行运算,但运算结果不仅限于TrueFalse

and运算

and运算返回的值以运算时出现的第一个逻辑值为False的对象为主。如果两个运算数都不是False那么就返回最后那个对象。如:

1
2
3
4
5
6
7
8
9
10
11
12
>>> a = 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
12
>>> a = 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
3
>>> a = 10
>>> not a
False

成员运算符

成员运算符用于测试给定的一个对象是否是另一个对象的“成员”,即,是否包含在另一个对象之中。
成员运算符只有两种:innot in。对于x in y,如果y包含x则返回True,否则返回Falsenot inin刚好相反。

身份运算符

身份运算符用于比较两个对象的存储单元(内存地址)是否同一,可以理解为“本质是否相同”。
身份运算符只有两种:isis notx is y类似id(x) == id(y),如果xy引用的对象相同(即两者指向同一储存单元)则返回True,否则返回Falseis notis刚好相反。

运算优先级

根据python官方文档,python的运算符优先级如下:(从高到低优先级递减)

运算符 描述
** 乘方运算
+, -, ~ 加减法(一元),按位取反
*, /, //, % 乘除法类(含取余)
+, - 加减法(二元)
<<, >> 左移,右移
& 按位与
^ 按位异或
| 按位或
in, not in, is, is not, <, <=, >, >=, !=, == 比较运算符,身份运算符,成员运算符
not 逻辑非
and 逻辑与
or 逻辑或
if-else 三目运算符(在后续笔记中提及)
lambda lambda运算(在后续笔记中提及)
= 赋值运算