六、成员运算符
成员运算符用于判断元素是否属于某个容器类型(列表、元组、字符串、字典等),返回布尔值,语法简洁高效。
| 运算符 | 功能描述 | 示例代码 | 运行结果 |
|---|---|---|---|
| in | 元素在容器中返回 True | 3 in [1,2,3]、'a' in "abc" | True、True |
| not in | 元素不在容器中返回 True | 5 not in (1,2,3)、'x' not in "abc" | True、True |
实战代码示例
# 成员运算符实战
# 列表
fruits = ["apple", "banana", "orange"]
print("apple在列表中:", "apple" in fruits) # 输出:True
print("grape不在列表中:", "grape" not in fruits) # 输出:True
# 字符串(判断子串是否存在)
text = "Python is easy"
print("is"在字符串中:", "is" in text) # 输出:True
print("xyz"不在字符串中:", "xyz" not in text) # 输出:True
# 字典(判断key是否存在,不判断value)
person = {"name": "Tom", "age": 20}
print("name是字典的key:", "name" in person) # 输出:True
print("20是字典的value:", 20 in person) # 输出:False(只查key)
应用场景
- 数据校验(如判断用户输入的选项是否在合法列表中)
- 子串查找(如判断字符串中是否包含关键词)
- 字典 key 存在性判断(避免 KeyError)
七、身份运算符
身份运算符用于判断两个变量是否指向同一个对象(即内存地址是否相同),与 == 有本质区别:
==:判断两个变量的值是否相等is:判断两个变量的内存地址是否相同(是否为同一对象)
| 运算符 | 功能描述 | 示例代码 | 运行结果 |
|---|---|---|---|
| is | 指向同一对象返回 True | a = [1,2]; b = a; a is b | True |
| is not | 指向不同对象返回 True | a = [1,2]; b = [1,2]; a is not b | True |
实战代码示例
# 身份运算符实战
# 示例1:不可变对象(int、str)的小值缓存机制
a = 10
b = 10
print("a == b:", a == b) # 输出:True(值相等)
print("a is b:", a is b) # 输出:True(小整数缓存,内存地址相同)
# 示例2:可变对象(list、dict)无缓存
c = [1,2,3]
d = [1,2,3]
print("c == d:", c == d) # 输出:True(值相等)
print("c is d:", c is d) # 输出:False(内存地址不同,两个不同列表对象)
# 示例3:赋值后指向同一对象
e = c
print("e is c:", e is c) # 输出:True(e和c指向同一个列表)
e.append(4)
print("c的值:", c) # 输出:[1,2,3,4](修改e会影响c)
# 示例4:判断None(常用场景)
f = None
print("f is None:", f is None) # 输出:True(判断变量是否为None用is,效率更高)
注意事项
- 判断变量是否为
None时,优先使用is None(而非== None),效率更高且语义更清晰 - 不可变对象(int、str、tuple)在小值范围内可能被缓存,导致
is返回 True;大值或可变对象无此机制
八、位运算符(简要介绍)
位运算符直接操作二进制位,主要用于底层开发、性能优化等场景,日常开发中较少使用,了解核心用法即可。
| 运算符 | 功能描述 | 示例代码(二进制) | 运行结果 | ||
|---|---|---|---|---|---|
| & | 按位与(都为 1 则为 1) | 6(110) & 3(011) | 2(010) | ||
| 按位或(有 1 则为 1) | `6(110) | 3(011)` | 7(111) | ||
| 按位异或(不同则为 1) | 6(110) ^ 3(011) | 5(101) | |||
| ~ | 按位取反(0 变 1,1 变 0) | ~6(000...0110) | -7 | ||
| << | 左移(二进制位左移 n 位,末尾补 0) | 6(110) << 1 | 12(1100) | ||
| >> | 右移(二进制位右移 n 位,高位补符号位) | 6(110) >> 1 | 3(11) |
代码示例
# 位运算符示例
a = 6 # 二进制:110
b = 3 # 二进制:011
print("按位与:", a & b) # 输出:2(010)
print("按位或:", a | b) # 输出:7(111)
print("左移1位:", a << 1)# 输出:12(1100)
print("右移1位:", a >> 1)# 输出:3(11)
九、运算符优先级(关键规则)
当一个表达式中有多个运算符时,Python 按优先级顺序执行(类似数学中的 “先乘除后加减”),优先级从高到低核心规则:
- 括号
():优先级最高,可强制改变执行顺序(推荐优先使用,提高代码可读性) - 算术运算符:
**(幂)>*////%(乘除整除取模)>+/-(加减) - 位运算符:
~><</>>>&>^>| - 比较运算符:
==/!=/>/</>=/<= - 逻辑运算符:
not>and>or - 赋值运算符:优先级最低(最后执行)
优先级示例
# 运算符优先级示例
result = 2 + 3 * 4 # 先算3*4=12,再算2+12=14
print("2 + 3 * 4 =", result) # 输出:14
result = (2 + 3) * 4 # 括号改变优先级,先算2+3=5,再算5*4=20
print("(2 + 3) * 4 =", result) # 输出:20
result = 5 > 3 and 8 < 10 or 2 == 4 # 先比较,再and,最后or
print(result) # 输出:True
十、实战综合案例
结合多种运算符实现一个 “学生成绩评级系统”,巩固所学知识:
# 学生成绩评级系统
score = float(input("请输入学生成绩(0-100):"))
# 结合比较运算符、逻辑运算符、赋值运算符
if score < 0 or score > 100:
grade = "无效成绩"
elif score >= 90:
grade = "A(优秀)"
elif score >= 80:
grade = "B(良好)"
elif score >= 60:
grade = "C(及格)"
else:
grade = "D(不及格)"
# 输出结果
print(f"成绩:{score},评级:{grade}")
# 额外判断:是否需要补考(结合成员运算符)
fail_grades = ["D(不及格)"]
if grade in fail_grades:
print("提示:该学生需要参加补考!")
else:
print("提示:该学生成绩合格,无需补考!")
运行效果
请输入学生成绩(0-100):85
成绩:85.0,评级:B(良好)
提示:该学生成绩合格,无需补考!
总结
Python 运算符是构建代码逻辑的基础,核心要点总结:
- 优先掌握算术、赋值、比较、逻辑、成员运算符(日常开发 80% 场景够用)
- 区分
==(值相等)和is(对象相同)的用法,判断 None 用is None - 逻辑运算符支持短路求值,可优化代码效率
- 复杂表达式用括号明确优先级,提高可读性
- 结合实际场景(如成绩评级、数据校验)灵活组合不同运算符
掌握运算符后,你将能轻松编写条件判断、循环逻辑、数据处理等基础功能,为后续学习函数、类、模块等内容打下坚实基础。