python运算符2

0 阅读5分钟

六、成员运算符

成员运算符用于判断元素是否属于某个容器类型(列表、元组、字符串、字典等),返回布尔值,语法简洁高效。

运算符功能描述示例代码运行结果
in元素在容器中返回 True3 in [1,2,3]'a' in "abc"True、True
not in元素不在容器中返回 True5 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指向同一对象返回 Truea = [1,2]; b = a; a is bTrue
is not指向不同对象返回 Truea = [1,2]; b = [1,2]; a is not bTrue

实战代码示例

# 身份运算符实战
# 示例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) << 112(1100)
>>右移(二进制位右移 n 位,高位补符号位)6(110) >> 13(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 按优先级顺序执行(类似数学中的 “先乘除后加减”),优先级从高到低核心规则:

  1. 括号 ():优先级最高,可强制改变执行顺序(推荐优先使用,提高代码可读性)
  2. 算术运算符:**(幂)> *////%(乘除整除取模)> +/-(加减)
  3. 位运算符:~ > <</>> > & > ^ > |
  4. 比较运算符:==/!=/>/</>=/<=
  5. 逻辑运算符:not > and > or
  6. 赋值运算符:优先级最低(最后执行)

优先级示例

# 运算符优先级示例
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 运算符是构建代码逻辑的基础,核心要点总结:

  1. 优先掌握算术、赋值、比较、逻辑、成员运算符(日常开发 80% 场景够用)
  2. 区分 ==(值相等)和 is(对象相同)的用法,判断 None 用 is None
  3. 逻辑运算符支持短路求值,可优化代码效率
  4. 复杂表达式用括号明确优先级,提高可读性
  5. 结合实际场景(如成绩评级、数据校验)灵活组合不同运算符

掌握运算符后,你将能轻松编写条件判断、循环逻辑、数据处理等基础功能,为后续学习函数、类、模块等内容打下坚实基础。