在编程语言中,若要执行一个"表达式"的计算,就必须配合使用"操作数"和"运算符"。操作数是指参与计算的具体数值,而运算符则是代表特定运算功能的符号。比如在表达式 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 |
使用算术运算符进行计算时,遵循"先乘除后加减"的规则,并优先计算括号内的表达式。
ini
a = 3*(3+2)
print(a) # 15
算术运算符常与赋值运算符一起使用,以实现变量的递增或递减。
css
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
来实现。
bash
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 |
css
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。
ini
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。
ini
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。
ini
a = True
b = False
print(not a) # False
print(not b) # True
逻辑运算符可以结合比较运算符,做更复杂的逻辑判断。
css
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。
ini
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 |
bash
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 的结果会是相同的。
注意,使用跨列运算符后不得加上空格或其它字元
ini
a = ( 1 + 2 + 3 +
4 + 5 + 6 +
7 + 8 + 9 )
b = 1 + 2 + 3 + \
4 + 5 + 6 + \
7 + 8 + 9