Python 运算符

在 Python 中,运算符指的是对 “变量” 或 “值” 进行运算操作的符号。运算符一般用于对一个或几个值进行计算,从而得出运算结果,如下图所示。就像数学中的加减乘除也需要运算符一样。不过对于 Python 来说,我们需要遵循计算机语言运算的一套规则。

Python 运算符

在 Python 中,常用的运算符有以下几种。

  • 算术运算符。
  • 赋值运算符。
  • 比较运算符。
  • 逻辑运算符。
  • 成员运算符。
  • 身份运算符。

除了上面运算符之外,Python 还有位运算符和三元运算符。其中,三元运算符在下一章会介绍到。而位运算符用得不多,这里不详细展开。

Python 算术运算符

在 Python 中,算术运算符一般用于实现数学运算,包括加、减、乘、除等。其中,常用的算术运算符如下表所示。

Python 算术运算符
运算符 说明 示例
+ 10 + 5      # 返回 15
- 10 - 5       # 返回 5
* 10 * 5       # 返回 50
/ 10 / 5       # 返回 2.0
% 求余 10 % 4     # 返回 2
** 求幂 2 ** 3       # 返回 8
// 取整除,即返回商的整数部分 9 // 2       # 返回 4

对于整数间的四则运算,只有 “/” 的运算结果是浮点数,其他运算结果均为整数。

注意: Python 中的乘号是 “*” 而不是 “×”,除号是 “/” 而不是 ÷。为什么要这样定义呢?这是因为 Python 语言的开发者希望尽量使用键盘上已有的符号来表示这些运算符。我们仔细看看自己的键盘,是不是只有 “*” 和 “/”,却没有 “×” 和 “÷”?

示例 1:使用算术运算符

a = 1
b = 2
c = 3
print(a + b * c)

运行结果如下。

7

分析:

在上述代码中,print(a + b * c) 等价于 print(1 + 2 * 3),因此运行结果为 7。

Python 赋值运算符

在 Python 中,赋值运算符用于将右边表达式的值保存到左边的变量中去。其中,常用的赋值运算符如下表所示。

Python 赋值运算符
运算符 示例
= name = '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 的简化形式。+=、-=、*= 以及 /= 这几个运算符,其实就是为了简化代码而出现的,有经验的开发人员大多喜欢用这种简写形式。小伙伴们还是要熟悉一下这种写法,以免看不懂别人的代码。

示例 2:使用赋值运算符

a = 10
b = 5

a += b
b += a

print(a)
print(b)

运行结果如下。

15
20

分析:

首先定义变量 a 的值为 10,变量 b 的值为 5。当执行 a += b 后,此时 a 的值为 15(10 + 5),b 的值没有变化,依旧是 5。由于程序是从上而下执行的,当执行 b += a 时,由于之前 a 的值已经变为 15 了,因此执行后,a 的值为 15,b 的值为 20(即 15 + 5)。

这里要清楚一点:a 和 b 都是变量,它们的值会随着程序的执行而变化。

Python 比较运算符

在 Python 中,比较运算符用于将运算符两边的值或表达式进行比较,如果比较结果是对的,则返回 True;如果比较结果是错的,则返回 False。

True 和 False 是布尔值,我们在 “Python 数据类型” 一节中已经介绍过了。其中,常用的比较运算符如下表所示。

Python 比较运算符
运算符 说明 示例
> 大于 2 > 1        # 返回 True
< 小于 2 < 1        # 返回 False
>= 大于等于 2 >= 2     # 返回 True
<= 小于等于 2 <= 2     # 返回 True
== 等于 1 == 2     # 返回 False
!= 不等于 1 != 2      # 返回 True

注意: 运算符 “<=” 中的 “<” 和 “=” 之间不能有空格,类似的还有 >=、== 和 !=。

示例 3:使用比较运算符

a = 20
b = 10

result1 = (a > b)
result2 = (a == b)
result3 = (a != b)

print(result1)
print(result2)
print(result3)

运行结果如下。

True
False
True

分析:

对于一条赋值语句来说,都是先运算右边,然后再将右边结果赋值给左边的变量。

= 和 == 的区别

等号(=)” 是赋值运算符,用于将右边的值赋值给左边的变量。 “双等号(==)” 是比较运算符,用于比较左右两边的值是否相等。

如果想要比较两个值是否相等,写成 a = b 就是错误的,正确写法应该是 a == b。

Python 逻辑运算符

在 Python 中,逻辑运算符用于执行 “布尔值的运算”,且经常和比较运算符结合使用。逻辑运算符只有 3 种,如下表所示。

Python 逻辑运算符
运算符 说明
and “与” 运算
or “或” 运算
not “非” 运算

1.“与” 运算

在 Python 中,与运算使用 “and” 表示。如果 and 两边的值都为 True,则结果返回 True;如果有一个为 False 或者两个都为 False,则结果返回 False。

and 真 → 真
真 and 假 → 假
假 and 真 → 假
假 and 假 → 假

示例 4:使用与运算

a = 20
b = 10
c = 10

result = (a < b) and (b == c)
print(result)

运行结果如下。

False

分析:

a < b 返回 False,b == c 返回 True,因此 result = False and True。根据与运算的规则,result 最终的值为 False。

2. “或” 运算

在 Python 中,或运算使用 “or” 表示。如果 or 两边的值都为 False,则结果返回 False;如果有一个为 True 或者两个都为 True,则结果返回 True。

or 真 → 真
真 or 假 → 真
假 or 真 → 真
假 or 假 → 假

示例 5:使用或运算

a = 20
b = 10
c = 10

result = (a < b) or (b == c)
print(result)

运行结果如下。

True

分析:

a < b 返回 False,b == c 返回 True,因此 result = False or True。根据或运算的规则,result 最终的值为 True。

3. “非” 运算

在 Python 中,非运算使用 “not” 表示。非运算跟与运算、或运算不太一样,非运算操作的对象只有一个。当 not 右边的值为 True 时,最终结果为 False;当 not 右边的值为 False 时,最终结果为 True。

not 真 → 假
not 假 → 真

非运算其实很简单,直接取反就行,这个家伙就是专门跟你唱反调的。

示例 6:使用非运算符

result1 = not True
result2 = not False

print(result1)
print(result2)

运行结果如下。

False
True

示例 7:非运算的更多使用

a = 20
b = 10
c = 10

result = not a < b and not b == c
print(result)

运行结果如下。

False

分析:

a < b 返回 False,故 not a < b 返回 True。b == c 返回 True,故 not b == c 返回 False。not a < b and not b == c 等价于 True and False,结果返回 False。

当把上面示例中的 “and” 换成 “or” 后,返回结果为 True,小伙伴们可以自行测试一下。此外,我们也不要被这些看起来复杂的运算吓到了。实际上,再复杂的运算,一步步来,也是非常简单的。

关于 “与” 、 “或” 、 “非” 的逻辑运算,小伙伴们需要清楚以下几点。

  • True 的 not 为 False,False 的 not 为 True。
  • A and B:当 A、B 全为 True 时,结果为 True,否则结果为 False。
  • A or B:当 A、B 全为 False 时,结果为 False,否则结果为 True。

提示: 接下来介绍的成员运算符和身份运算符,初学的小伙伴可以先跳过。等学完了后面的内容,再到这里回顾一下。

Python 成员运算符

在 Python 中,成员运算符用于判断某个值是否存在于序列列表元组字符串)中。成员运算符只有 2 个,如下表所示。

Python 成员运算符
运算符 说明
in 判断某个值是否 “存在” 于序列中。如果存在,返回 True;如果不存在,返回 False
not in 判断某个值是否 “不存在” 于序列中。如果存在,返回 False;如果不存在,返回 True

示例 8:用于列表

a = 10
b = 5
nums = [1, 2, 3, 4, 5]    # 定义一个列表

print(a in nums)
print(b in nums)

运行结果如下。

False
True

分析:

由于 a 不存在于列表 nums 中,因此 a in nums 返回 False。由于 b 存在于列表 nums 中,因此 b in nums 返回 True。小伙伴们可以把 “in” 改为 “not in”,然后再来看看输出结果。

示例 9:用于元组

a = 10
b = 5
nums = (1, 2, 3, 4, 5)    # 定义一个元组

print(a in nums)
print(b in nums)

运行结果如下。

False
True

示例 10:用于字符串

string = 'Python'    # 定义一个字符串
print('th' in string)
print('on' in string)

运行结果如下。

True
True

身份运算符

在 Python 中,身份运算符用于判断两个变量的引用对象是否同一个。身份运算符只有 2 个,如下表所示。

Python 身份运算符
运算符 说明
is 判断两个变量的引用对象是否相同。如果相同,返回 True;如果不同,返回 False
is not 判断两个变量的引用对象是否不同。如果相同,返回 False;如果不同,返回 True

注意: is 用于判断两个变量的 “引用对象” 是否相同,而 == 用于判断两个变量的 “值” 是否相等。

示例 11:使用身份运算符

list1 = [1, 2, 3]
list2 = [1, 2, 3]

print(list1 == list2)    # 返回 True,因为它们的值相等
print(list1 is list2)    # 返回 False,因为它们在内存中是两个不同的列表对象

运行结果如下。

True
False

运算符优先级

优先级,其实就是 “执行顺序”。我们都知道,在数学中,先算括号里面的,接下来算 “乘除”,最后算 “加减”。

Python 的运算符也是有优先级的,规则很简单:优先级高的先运算,优先级低的后运算。优先级相同的,从左到右进行运算

Python 的运算符比较多,优先级也比较复杂。不过平常我们只需要关注常见运算符的优先级就可以了,主要包括以下 3 点。

  • 对于算术运算来说,“乘除” 比 “加减” 优先级要高。另外 “求余” 和 “乘除” 的优先级相同。
  • 对于逻辑运算来说,非(not)>与(and)>或(or)。
  • 对于赋值运算来说,这些赋值运算符优先级都非常低,所以对于一个表达式来说,往往最后才是赋值操作。
给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号