掘金 后端 ( ) • 2024-04-21 18:54

在编程语言中,若要执行一个“表达式”的计算,就必须配合使用“操作数”和“运算符”。操作数是指参与计算的具体数值,而运算符则是代表特定运算功能的符号。比如在表达式 3+4 中,数字 3 和 4 就是操作数,加号 (+) 则是运算符,整个这样的算术组合即构成了一个运算表达式。本篇文章将会介绍 Python 语言中所包含的各种运算符。

赋值运算符

赋值运算符是=,将等号右边的结果(值)赋给等号左边的变量。例如:

  • a = 'hello':将字符串'hello'赋值给变量a。

  • b = 123:将数字123赋值给变量b。

  • c = [1, 2, 3]:将列表[1, 2, 3]赋值给变量c。

算术运算符

算术运算符包括常见的加、减、乘、除符号,用于对数字进行数学运算。

需要注意的是,左边的变量是右边运算后的结果,这与一般的数学表达式有所不同。

运算符 说明 范例 结果 + 加法 a = 1+2 a = 3 - 减法 a = 20-12 a = 8 * 乘法 a = 2*3 a = 6 / 除法 a = 9/2 a = 4.5 // 除法取整数 (无条件舍去) a = 9//2 a = 4 % 余数 a = 9%2 a = 1 ** 次方 a = 2**3 a = 8

使用算术运算符进行计算时,遵循“先乘除后加减”的规则,并优先计算括号内的表达式。

a = 3*(3+2)
print(a)   # 15

算术运算符常与赋值运算符一起使用,以实现变量的递增或递减。

a = 1       # a 赋值 1
a = a + 1   # a 赋值 1 + 1 ( 此时右边的 a 等于 1 )
print(a)    # 2

b = 5       # b 赋值 5
b = b - 1   # b 赋值 5 - 1 ( 此时右边的 b 等于 5 )
print(b)    # 4

如果需要开根号,可以使用**0.5来实现。

print(4**0.5)   # 2.0

除了单纯的运算,也可以将算术运算符和赋值运算符组合,变成复合类型的运算符。

运算符 范例 等同于 += a += 1 a = a + 1 -= a -= 1 a = a - 1 *= a *= 2 a = a * 2 /= a /= 2 a = a / 2 //= a //= 3 a = a // 3 %= a %= 3 a = a % 3 **= a **= 2 a = a ** 2

比较运算符

比较运算符用于比较两个值的大小,结果只有True或False两种,常用于逻辑判断。比较运算符包括:

注意,因为单一个等号(=)是赋值运算符,所以如果要进行相等的比较,必须使用两个等号(==)。

运算符 说明 范例 > 大于 (a 是否大于 b) a > b < 小于 (a 是否小于 b) a < b >= 大于等于 (a 是否大于等于 b) a >= b <= 小于等于 (a 是否小于等于 b) a <= b == 等于 (a 是否等于 b) a == b != 等于 (a 是否不等于 b) a != b
a = 5
b = 3

print(a < b)   # False
print(b <= a)  # True
print(a != b)  # True
print(a == b)  # False

逻辑运算符

逻辑运算符”可以判断 and(与)、or(或)和 not(非)三种逻辑状态。逻辑运算符包括:

比较运算符可以使用 & 代替 and,| 代替 or。

and

当 a 是 True,b 也是 True,结果是 True,但只要 a、b 其中一个是 False,结果就是 False。

图片

a = True
b = False
c = True

print(a & b)     # False
print(a and b)   # False
print(a & c)     # True
print(a and c)   # True

or

只要 a、b 其中一个是 True,结果就是 True。

图片

a = True
b = False
c = True

print(a | b)     # True
print(a or b)    # True
print(a | c)     # True
print(a or c)    # True

not

如果 a 为 True,not a 的结果 False,如果 a 为 False,not a 的结果 True。

图片

a = True
b = False

print(not a)   # False
print(not b)   # True

逻辑运算符可以结合比较运算符,做更复杂的逻辑判断。

a = 1
b = 2
c = 3

print((a>b)&(c>b))        # False
print((a>b)|(c>b))        # True
print(not ((a>b)&(c>b)))  # True ( 因为 (a>b)&(c>b) 为 False )

in 与 is 运算符

如果有 a 和 b 两个变量,使用 in 可以判断 b 是否包含 a,使用 is  可以判断 a 和 b 是否为相同,如果判断包含或相同,返回 True,否则返回 False。

a = 2
b = 4
c = [1,2,3]
print(a in c)    # True
print(b in c)    # False

x = [1,2,3]
y = [1,2,3]
z = x
print(x is y)    # False
print(x is z)    # True

位运算符

在程序语言的底层,所有数值都是以二进制形式(0和1)表示。位运算符针对每个数值的二进制字符进行位运算。下面的表格使用 4 (二进位 0100) 和 5 ( 二进位 0101 ) 为例子。

运算符 说明 范例 结果 & 位且,二进位数字「完全相同」的部分,不同的部分以 0 取代。 4&5,使用 0100 和 0101 比较后,返回 0100 4 | 位或,二进位数字「只要有一个为 1 」的部分都为 1。 4&5,使用 0100 和 0101 比较后,返回 0101 5 ^ 位异或,二进位数字「完全相同」的部分都为 0,不同的部分以 1 取代。 4^5,使用 0100 和 0101 比较后,返回 0001 1 ~ 位相反,二进位数字 0 变成 1,1 变成 0 ~4,0100 相反为 1011 -5 >> 位右移,将二进位数字往右移动指定位数,左侧补 0 4>>2,0100 往右移动两位 0001 1 << 位左移,将二进位数字往左移动指定位数,右侧补 0 5<<2,0101 往左移动两位 10100 20
print(4&5)    # 4
print(4|5)    # 5
print(4^5)    # 1
print(~4)     # -5
print(4>>2)   # 1
print(5<<2)   # 20

跨列运算符

在遇到“算式过长,需要换行”的代码或运算式时,除了使用括号包裹以换行计算,也可以使用“反斜杠\”放在一行的最后,以实现代码的换行。下方的例子执行后,a 和 b 的结果会是相同的。

注意,使用跨列运算符后不得加上空格或其它字元

a = ( 1 + 2 + 3 +
      4 + 5 + 6 +
      7 + 8 + 9 )

b = 1 + 2 + 3 + \
    4 + 5 + 6 + \
    7 + 8 + 9