Python3 运算符
Python3 运算符
🎯 学习目标
掌握 Python 中各类运算符的使用方法,包括算术运算符、比较运算符、逻辑运算符、位运算符等,并能在实际项目中灵活运用。理解运算符优先级与结合性,以及其在代码逻辑控制中的作用。
🔑 核心重点
分类 | 内容 |
---|---|
算术运算符 | + , - , * , / , // , % , ** |
比较运算符 | == , != , > , < , >= , <= |
逻辑运算符 | and , or , not |
赋值运算符 | = , += , -= , *= , /= , //= , %= , **= |
成员运算符 | in , not in |
身份运算符 | is , is not |
位运算符 | & , ` |
运算符优先级 | 掌握常见运算符优先级顺序,避免歧义 |
实际应用场景 | 条件判断、数据处理、循环控制、算法实现等 |
📚 详细讲解
一、什么是运算符?
运算符是用于对一个或多个操作数进行操作的符号。Python 支持丰富的运算符类型,适用于各种数据类型的运算。
示例:
a = 10
b = 3
# 算术运算
print(a + b) # 输出:13
print(a ** b) # 输出:1000(10 的 3 次方)
# 比较运算
print(a > b) # 输出:True
# 逻辑运算
print(a > 5 and b < 5) # 输出:True
二、算术运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ |
加法 | 2 + 3 |
5 |
- |
减法 | 5 - 2 |
3 |
* |
乘法 | 4 * 3 |
12 |
/ |
除法(浮点) | 7 / 2 |
3.5 |
// |
整除 | 7 // 2 |
3 |
% |
取余 | 7 % 2 |
1 |
** |
幂运算 | 2 ** 3 |
8 |
📌 注意:
- 使用
/
总是返回浮点数。 //
和%
在负数情况下行为不同(需注意取整方向)。
三、比较运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
== |
等于 | 5 == 5 |
True |
!= |
不等于 | 5 != 3 |
True |
> |
大于 | 6 > 4 |
True |
< |
小于 | 3 < 5 |
True |
>= |
大于等于 | 5 >= 5 |
True |
<= |
小于等于 | 4 <= 6 |
True |
📌 特点:
- 可以比较数字、字符串、列表等任意可比较对象。
- 字符串比较按 Unicode 值逐字符比较。
四、逻辑运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
and |
与 | True and False |
False |
or |
或 | True or False |
True |
not |
非 | not True |
False |
📌 短路特性:
and
若第一个为假,直接返回第一个值。or
若第一个为真,直接返回第一个值。
五、赋值运算符
运算符 | 描述 | 示例 | 等价表达式 |
---|---|---|---|
= |
简单赋值 | a = 5 |
a = 5 |
+= |
加法赋值 | a += 3 |
a = a + 3 |
-= |
减法赋值 | a -= 2 |
a = a - 2 |
*= |
乘法赋值 | a *= 4 |
a = a * 4 |
/= |
除法赋值 | a /= 2 |
a = a / 2 |
//= |
整除赋值 | a //= 3 |
a = a // 3 |
%= |
取余赋值 | a %= 5 |
a = a % 5 |
**= |
幂赋值 | a **= 2 |
a = a ** 2 |
六、成员运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
in |
是否存在 | 'a' in 'abc' |
True |
not in |
是否不存在 | 'd' not in 'abc' |
True |
📌 适用场景:
- 判断某个元素是否存在于字符串、列表、元组、字典等中。
七、身份运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
is |
是否同一对象 | a = [1, 2]; b = a; a is b |
True |
is not |
是否非同一对象 | a = [1, 2]; b = [1, 2]; a is not b |
True |
📌 区别 ==
与 is
:
==
判断值是否相等;is
判断是否是同一个对象(内存地址相同)。
八、位运算符
运算符 | 描述 | 示例 | 说明 |
---|---|---|---|
& |
按位与 | 5 & 3 → 1 |
二进制:0101 & 0011 = 0001 |
` | ` | 按位或 | `5 |
^ |
异或 | 5 ^ 3 → 6 |
二进制:0101 ^ 0011 = 0110 |
~ |
取反 | ~5 → -6 |
补码表示 |
<< |
左移 | 5 << 1 → 10 |
二进制左移一位 |
>> |
右移 | 5 >> 1 → 2 |
二进制右移一位 |
📌 应用:
- 底层系统编程、网络协议解析、权限位掩码等。
九、运算符优先级与结合性
运算符优先级(从高到低) |
---|
() (括号) |
** (幂) |
~ , + , - (一元) |
* , / , // , % |
+ , - (二元) |
<< , >> |
& |
^ |
` |
== , != , > , < 等 |
is , is not |
in , not in |
not |
and |
or |
📌 建议:
- 使用括号提高代码可读性,避免因优先级错误导致逻辑问题。
⚠️ 注意事项
- 不要混淆
==
和is
:前者比较值,后者比较对象身份。 - 避免多重复杂运算在同一行:影响可读性。
- 合理使用括号提升优先级可读性:即使不改变结果,也应增强可读性。
- 注意布尔值的隐式转换:如
0
,None
,[]
等在if
中视为False
。 - 位运算符通常用于底层开发:普通业务逻辑中较少使用。
🧪 实际案例分析
📌 场景:判断用户输入是否为合法年份
year = input("请输入年份:")
if year.isdigit():
year = int(year)
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} 是闰年")
else:
print(f"{year} 不是闰年")
else:
print("请输入有效的数字年份!")
📌 分析:
- 使用了
==
,!=
,or
,and
等运算符判断条件。 - 使用
isdigit()
成员运算符判断输入是否为数字字符串。 - 使用
int()
类型转换确保后续运算正确。
🧩 拓展练习(动手实践)
- 编写一个程序,计算某人的 BMI(体重指数),并根据结果输出“偏瘦”、“正常”、“超重”或“肥胖”。
- 输入两个日期(年月日),计算相差天数(可用
datetime
模块)。 - 编写一个函数,接收一个整数 n,返回所有小于 n 的偶数(用位运算判断奇偶)。
- 使用位运算实现两个变量交换数值,不使用中间变量。
- 使用逻辑运算符优化以下代码逻辑:
if age >= 18 and gender == "male":
print("成年男性")
elif age >= 18 and gender == "female":
print("成年女性")
else:
print("未成年")
📚 推荐阅读
- Python 官方文档 - Expressions
- PEP 8 - Python 编码风格指南
- 《流畅的 Python》第 1 章 - 数据模型与运算符
- 廖雪峰 Python 教程 - 运算符
- 菜鸟教程 - Python 运算符
🧭 下一步建议
- 下一章学习内容:《Python 控制流语句》
- 学习使用
if
,for
,while
构建程序逻辑流程 - 探索嵌套结构与代码缩进规范
- 掌握断言、异常处理机制
- 练习编写完整的交互式小程序
如果你希望我为你提供:
- Python 运算符优先级表 PDF
- PyCharm 快速调试技巧(查看变量值、条件断点)
- 更多实战练习题(如计算器、BMI 分析器、猜数字游戏等)
欢迎随时告诉我 😊