# Python教程 - 3 运算符

在编写有逻辑的代码前,先学习一下 Python 中的运算符。

下面介绍 Python 中常见的运算符:算数运算符赋值运算符关系运算符


# 3.1 算数运算符

算数运算符是干嘛的?

就是进行数学运算的,就是小学学的加、减、乘、除等。

Python中常见的算数运算符如下:

运算符 描述 举例
+ 返回两个数相加的结果,例如: 10 + 20 = 30
- 返回两个数相减的结果,例如 :10 - 20 = -10
* 返回两个数相乘的结果,例如: 10 * 20 = 200
/ 返回两个数相除的结果,例如: 10 / 20 = 0.5
// 整除 返回两个数相除,商的整数部分,例如:9 // 2 = 4
% 取余 返回除法运算的余数,例如:9 % 7 = 2
** 指数 返回指数运算结果,例如:2 ** 3 = 8

举例子:

print("10 + 20 =", (10 + 20))				# 10 + 20 = 30
print("10 - 20 =", (10 - 20))				# 10 - 20 = -10
print("10 * 20 =", (10 * 20))				# 10 * 20 = 200
print("10 / 20 =", (10 / 20))				# 10 / 20 = 0.5
print("9 // 2 =", (9 // 2))					# 9 // 2 = 4
print("9 % 7 =", (9 % 7))						# 9 % 7 = 2
print("2的3次方 =", (2 ** 3))				# 2的3次方 = 8
1
2
3
4
5
6
7

算数运算符也是有优先级的,和在小学的时候学习的一样。

i = 3 + 2 * 4;
print(i);  # 结果为:11
1
2

乘、除、取模运算的优先级大于加、减运算

# 3.2 赋值运算符

赋值运算符就是用来给变量赋值的。

# 赋值运算符

运算符 描述 举例
= 赋值运算符 就是把 = 右边的值赋值给左边的变量,之前用过了。

例如:

num = 1 + 2
num = a + b
1
2

除了赋值运算符,下面还有复合赋值运算符。

# 复合赋值运算符

复合赋值运算符就是经过计算后,将值赋给前面的变量。

运算符 描述 举例
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 赋值运算符 c **= a 等效于 c = c ** a
//= 取整赋值运算符 c //= a 等效于 c = c // a

举个栗子:

a = 5
b = 3

a += b  # 等效于 a = a + b
print(a)  # 8

a = 5
a -= b  # 等效于 a = a - b
print(a)  # 2

a = 5
a *= b  # 等效于 a = a * b
print(a)  # 15
1
2
3
4
5
6
7
8
9
10
11
12
13

复合赋值运算符感觉这么写可读性还变差了,有什么好处呢?

  1. 更加简练;
  2. 效率更高。

# 3.3 关系运算符

关系运算符也就是比较运算符,主要有以下几种:

运算符 > < >= <= == !=
含义 大于 小于 大于等于 小于等于 等于 不等于

举个栗子:

a = 10
b = 3
c = a == b  # 将比较运算的结果赋值给c
print(c)  # False

d = a > b  # 将比较运算的结果赋值给c
print(d)  # True

print(a != b)  # True
print(a < b)  # False
print(a >= b)  # True
print(a <= b)  # False
1
2
3
4
5
6
7
8
9
10
11
12

关系运算符得到的结果都是 bool 类型,在后面的章节可以通过使用关系运算符来进行条件的判断。例如身高大于120cm就要买儿童票等场景。

# 3.4 逻辑运算符

逻辑运算是用来同时判断多个条件。

主要有以下三种:

运算符 and or not
含义 与,两边条件同时满足 或,两边条件满足一个即可 非,不满足

举个栗子:

a = True
b = False

print(a and b) 		# False
print(a or b) 		# True
print(not a) 		# 将a取反,结果是False
1
2
3
4
5
6

逻辑运算符两边必须是 bool 类型的变量或结果为 bool 类型的表达式。

逻辑运算符得到的结果还是 bool 类型,可以赋值给 bool 类型的变量。

再举个例子:

a = 3
b = 12

print(a > 5 and b > 10)  # False
print(a > 5 or b > 10)  # True
print(not (a > 5))  # True
1
2
3
4
5
6

not(a > 5) 是将 a > 5 的结果取反。 a > 5 结果为 False ,取反则为 True

# 逻辑运算符的优先级

优先级:not > and > or

举个栗子:

result = not 1 < 2 and 3 == 3 or 1 == 3 and 2 <= 3
print(result)				# 打印:False
1
2

可以将逻辑运算的结果赋值给一个变量的。当一个逻辑运算语句中同时包含and、or 或 not 的时候,会按照优先级进行运算。

所以上面先运算 not 1 < 2,然后运算 not 1 < 2 and 3 == 3,然后运算 1 == 3 and 2 <= 3,最后运算 or。

# 逻辑短路

逻辑短路就是在进行逻辑运算的时候,如果已经能够得到最后的值,就不会再继续进行判断了。

只有 and 和 or 运算符存在逻辑短路。

举个栗子:

num = 10
if num > 20 and num < 40
    print("num在20~40之间")				# 不会执行
1
2
3

在进行 if 判断的时候,num > 20 已经不成立了,而 and 运算需要两边都满足,所以后面的条件成不成立都不会影响最终逻辑表达式的结果,所以 and 后面就不会再继续判断了,这就是逻辑短路。

同样 or 运算符:

num = 10
if num < 20 or num > 40
    print("num在20~100之间")				# 打印:num在20~100之间
1
2
3

在进行 if 判断的时候,num < 20 已经成立了,or 运算只要一边满足即可,所以整个逻辑表达式肯定是成立的,所以 or 后面就不会继续判断了。