二、运算符全解析
Python 提供了丰富的运算符集合,用于执行各种数学计算、逻辑判断和变量操作。本文将系统介绍五大类运算符:算术运算符、比较运算符、逻辑运算符、赋值运算符及其他优先级规则,帮助您构建坚实的编程基础。
文章目录
-
一、算术运算符 (Arithmetic Operators)
-
二、比较运算符 (Comparison Operators)
-
三、逻辑运算符 (Logical Operators)
-
四、赋值运算符 (Assignment Operators)
-
五、位运算符 (Assignment Operators)
-
六、成员运算符 (Assignment Operators)
-
七、身份运算符
-
八、运算符优先级 (Operator Precedence)
-
九、综合应用示例
-
总结
一、算术运算符 (Arithmetic Operators)
算术运算符用于执行基本数学运算,支持整数和浮点数操作:
示例:
# -------------算术运算符---------------
a = 20
b = 10
c = a + b
print(a , "+" , b , "的结果为" , c)
c = a - b
print(a , "-" , b , "的结果为" , c)
c = a * b
print(a , "*" , b , "的结果为" , c)
c = a / b # 注意:结果为浮点类型
print(a , "/" , b , "的结果为" , c)
c = a % b
print(a , "%" , b , "的结果为" , c)
a = 2
b = 3
c = a ** b
print(a , "的" , b , "次方结果为" , c)
a = 10
b = 3
c = a // b
print(a , "//" , b , "的结果为" , c)
print("-" * 30) # 输出30次-
输出结果:
20 + 10 的结果为 30
20 - 10 的结果为 10
20 * 10 的结果为 200
20 / 10 的结果为 2.0
20 % 10 的结果为 0
2 的 3 次方结果为 8
10 // 3 的结果为 3
二、比较运算符 (Comparison Operators)
比较运算符用于比较两个值,返回布尔值 True 或 False:
示例:
注意:除了不同数据类型的数据不能比较大小
# -------------比较运算符---------------
num1 = 10
num2 = 20
print(num1 == num2) # False
print(num1 != num2) # True
print(num1 > num2) # Flase
print(num1 < num2) # True
print(num1 >= num2) # False
print(num1 <= num2) # True
num3 = 'abc'
# 注意:不同的数据类型之间不能进行大小的比较
print(num1 > num3)
# 如果是字符串比较大小,是从最左边开始逐个比较字符串中相应位置的字符的ASCII码
print('5' > '6') # False
print('15' > '6') # False
三、逻辑运算符(Logical Operators)
逻辑运算符用于组合条件语句,支持短路求值:
| 运算符 | 说明 |
|---|---|
| and | 与,x and y,若 x 为 False 返回 x 的值,否则返回 y 的值 |
| or | 或,x or y,若 x 为 True 返回 x 的值,否则返回 y 的值 |
| not | 非,not x,若 x 为 True 返回 False,若 x 为 False 返回 True |
示例:
# -------------逻辑运算符---------------
b1 = False
b2 = True
print(b1 and b2) # False
print(b1 or b2) # True
print(not(b1)) # True
print(5 and 8) # 8 非0表示True,0表示False
print(0 and 8) # 0
print(5 or 8) # 5
print(0 or 8) # 8
print(not(5)) # False
四、赋值运算符(Assignment Operators)
赋值运算符用于给变量赋值,支持复合运算:
| 运算符 | 说明 | 实例 |
|---|---|---|
= |
赋值 | a = 1 |
+= |
加法赋值 | a += 2,等同于 a = a + 2 |
-= |
减法赋值 | a -= 2,等同于 a = a - 2 |
*= |
乘法赋值 | a *= 2,等同于 a = a * 2 |
/= |
除法赋值 | a /= 2,等同于 a = a / 2 |
//= |
整除赋值 | a //= 2,等同于 a = a // 2 |
%= |
模赋值 | a %= 2,等同于 a = a % 2 |
**= |
幂赋值 | a **= 2,等同于 a = a ** 2 |
:= |
海象运算符,在表达式中同时进行赋值和返回赋值。Python 3.8 版本新增 | num1 = 20 print((num2 := 3**2)) print(num1) print(num2) |
示例:
# -------------赋值运算符---------------
num3 = 30
num4 = 40
num5 = num3 + num4
print(num5)
num3 += 50 # num3 = num3 + 50
print(num3)
输出结果:
70
80
五、位运算符
| 运算符 | 说明 | 实例 |
|---|---|---|
& |
按位与 | a & b |
| ` | ` | 按位或 |
^ |
按位异或 | a ^ b |
~ |
按位取反 | ~ a |
<< |
按位左移 | a << 1 |
>> |
按位右移 | a >> 1 |
(1) 原码反码补码
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1。
| 类型 | 正数 7 | 负数 -7 |
|---|---|---|
| 原码 | 符号位加上真值的绝对值 00000111 | 符号位加上真值的绝对值 10000111 |
| 反码 | 等于原码 00000111 | 原码符号位不变,其余位取反 11111000 |
| 补码 | 等于原码 00000111 | 反码的基础上 +1 11111001 |
(2) 正数的与、或、异或、非运算
正数与运算:17 & 13
| 操作数 | 二进制 |
|---|---|
| 17 | 00010001 |
| 13 | 00001101 |
| 结果 | 00000001 |
正数或运算:17 | 13
| 操作数 | 二进制 |
|---|---|
| 17 | 00010001 |
| 13 | 00001101 |
| 结果 | 00011101 |
正数异或运算:17 ^ 13
| 操作数 | 二进制 |
|---|---|
| 17 | 00010001 |
| 13 | 00001101 |
| 结果 | 00011100 |
六、成员运算符
| 运算符 | 说明 | 实例 |
|---|---|---|
| in | 在指定的序列中找到值返回 True,否则返回 False | a in ['a', 'b', 'c'] |
| not in | 在指定的序列中没有找到值返回 True,否则返回 False | a not in ['a', 'b', 'c'] |
示例:
# -------------成员运算符---------------
num6 = 1
num7 = 20
test_list = [1,2,3,4,5]
print(test_list)
print(num6 in test_list) # True 判断1是不是列表中的的成员
print(num7 not in test_list) # True
七、身份运算符
| 运算符 | 说明 | 实例 |
|---|---|---|
| is | 判断两个标识符是不是引用自相同对象 | a is b,类似 id(a) == id(b)。如果引用的是同一个对象则返回 True,否则返回 False |
| is not | 判断两个标识符是不是引用自不同对象 | a is not b,类似 id(a) != id(b)。如果引用的不是同一个对象则返回 True,否则返回 False |
示例:
# -------------身份运算符---------------
m = 20
n = 20
q = 30
print(m is n) # True 判断m和n在内存中是否指向同一个地址
print(n is q) # False
print(n is not q) # True
# id() 用于获取对象在内存中的地址
print(id(m) == id(n)) # True
print("-" * 30)
# -------------is和==的区别---------------
a = [1,2,3]
b = a
print(b is a) # True
print(b == a) # True
b = a[:]
print(b)
print(b is a) # False
print(b == a) # True
八、运算符优先级 (Operator Precedence)
Python 遵循特定优先级规则,括号()可强制改变计算顺序:
优先级示例:
result = 3 + 4 * 2 ** 2 # 相当于 3 + (4 * (2 ** 2)) = 19
print(result)
记忆技巧
- 先算 PEDMAS(括号、指数、乘除、加减)
- 逻辑运算符 and 优先级高于 or
- 比较运算符优先级高于逻辑运算符但低于算术运算符
九、综合应用示例
# 计算折扣价格
price = 100
discount_rate = 0.2
is_member = True
# 应用运算符优先级规则
final_price = price * (1 - discount_rate) if is_member else price
print(f"最终价格: {final_price}") # 输出 80.0
# 复杂条件判断
age = 25
has_ticket = True
can_enter = (age >= 18 or has_ticket) and not (age < 13 and not has_ticket)
print(f"是否可以进入: {can_enter}") # 输出 True
总结
1、算术运算符:掌握基本运算和特殊用法(如字符串重复)
2、比较运算符:注意 is 与 == 的区别,理解成员检测
3、逻辑运算符:利用短路特性优化条件判断
4、赋值运算符:灵活使用复合赋值和解包赋值

浙公网安备 33010602011771号