3. Python3 运算符

茶桁的 AI 秘籍-6

Hi,大家好。我是茶桁。

前两节我们学习了基本的 Python 特性和语法,并且认识了一些基本的 Python 脚本。今天,我们来学习一下 Python 的运算符,而我们选择的版本为 Python3。

什么是运算符

为了能让我们的学习顺利进行下去,首先我们需要先弄明白:什么是运算符

这里举一个简单的栗子:\(4 + 5 = 9\), 在这个简单的数学计算栗子中,4 和 5 倍称为操作数,+就被成为是运算符, 最后 9 就是它的运算结果。

到这里,我们对于运算符应该有了一个基本的认知,那么 Python 语言都支持哪些运算符呢?如下列表:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

接下来,就让我们来一个个的学习 Python 的运算符

算术运算符

运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 31
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -11
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210
/ 除 - x 除以 y b / a 输出结果 2.1
% 取模 - 返回除法的余数 b % a 输出结果 1
** 幂 - 返回 x 的 y 次幂 a**b 为 10 的 21 次方
// 取整除 - 向下取接近除数的整数 >>> 9//2 4 >>> -9//2 -5
1
2
3
4
5
6
7
8
9
10
11
# 算术运算符
a = 10
b = 21
print("a+b=", a+b)
print("a-b=", a-b)
print("a*b=", a*b)
print("b/a=", b/a)
print("b%a=", b%a)
print("a**b=", a**b)
print(9//2)
print(-9//2)

输出结果:

1
2
3
4
5
6
7
8
a+b= 31
a-b= -11
a*b= 210
b/a= 2.1
b%a= 1
a**b= 1000000000000000000000
4
-5

比较运算符

运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 True。
> 大于 - 返回 x 是否大于 y (a > b) 返回 False。
< 小于 - 返回 x 是否小于 y。所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意,这些变量名的大写。 (a < b) 返回 True。
>= 大于等于 - 返回 x 是否大于等于 y。 (a >= b) 返回 False。
<= 小于等于 - 返回 x 是否小于等于 y。 (a <= b) 返回 True。
1
2
3
4
5
6
7
# 比较运算符
print("a==b:", a==b)
print("a!=b:", a!=b)
print("a>b:", a>b)
print("a<b:", a<b)
print("a>=b:", a>=b)
print("a<=b:", a<=b)

输出结果:

1
2
3
4
5
6
a==b: False
a!=b: True
a>b: False
a<b: True
a>=b: False
a<=b: True

赋值运算符

运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 赋值运算符
c = a+b
print(c)
c+=a
print(c)
c-=a
print(c)
c*=a
print(c)
c/=a
print(c)
c%=a
print(c)
c=a
print(c)
c//=a
print(c)

输出结果:

1
2
3
4
5
6
7
8
31
41
31
310
31.0
1.0
10
1

位运算符

按位运算符是把数字看作二进制来进行计算的。bin()函数可以把数字转为二进制。

Python 中的按位运算法则如下:

下表中变量 a 为 60,b 为 13 二进制格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011
运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为 1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为 1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补 0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
1
2
3
4
5
6
7
8
9
10
11
# 位运算符
print(bin(20))
a = 60
b = 13
print("a = ", bin(a), ", b = ", bin(b))
print("a&b =",bin(a&b))
print("a|b =",bin(a|b))
print("a^b =",bin(a^b))
print("~a =",bin(~a))
print("a<<2 = ",bin(a<<2))
print("a>>2 = ",bin(a>>2))

输出结果:

1
2
3
4
5
6
7
8
0b10100
a = 0b111100 , b = 0b1101
a&b = 0b1100
a|b = 0b111101
a^b = 0b110001
~a = -0b111101
a<<2 = 0b11110000
a>>2 = 0b1111

逻辑运算符

Python 语言支持逻辑运算符,以下假设变量 a 为 10, b 为 20:

运算符 逻辑表达式 描述 实例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False
1
2
3
4
5
6
# 逻辑运算符
a = 10
b = 20
print("a and b = ", a and b)
print("a or b = ", a or b)
print("not(a and b) = ", not(a and b))

输出结果:

1
2
3
a and b =  20
a or b = 10
not(a and b) = False

成员运算符

除了以上的一些运算符之外,Python 还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
1
2
3
4
5
# 成员运算符
x = [0, 1, 2, 3, 4, 5, 6, 7]
y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("x in y :", x in y)
print("x not in y :", x not in y)

输出结果:

1
2
x in y : False
x not in y : True

身份运算符

身份运算符用于比较两个对象的存储单元

运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

注: id() 函数用于获取对象内存地址。

1
2
3
4
5
6
7
8
9
10
11
# 身份运算符
x = 10
y = x
print("x is y:", x is y)

x = 10
y = 10
print("x is y:", x is y)
print("id(x) == id(y)", id(x) == id(y))
print("x is not y:", x is not y)
id(x)

输出结果:

1
2
3
4
5
6
x is y: True
x is y: True
id(x) == id(y) True
x is not y: False

4312793616

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

注意:Pyhton3 已不支持 <> 运算符,可以使用 != 代替

本教程相关代码可在此查看

作者

Hivan Du

发布于

2023-07-31

更新于

2024-01-16

许可协议

评论