你可能每天都在用 +、-、=,但你真的了解它们的全部“威力”和“陷阱”吗?比如,is 和 == 有什么区别?// 和 / 到底谁是谁?还有那个酷酷的 := 是什么新式武器?
别急,今天我就带你闯荡一番Python运算符的“江湖”,让你从一个只会用“加减乘除”的“萌新”,成长为能驾驭各种“神兵利器”的“大侠”!
基础四则:+, -, *, /
进阶三杰:% (取模), ** (幂), // (整除)
# / 是精确除法,结果是浮点数print(10 / 3) # 输出: 3.333...# // 是整除,结果向下取整print(10 // 3) # 输出: 3print(-10 // 3) # 输出: -4 (注意是向下取整!)# % 是取模,即取余数print(10 % 3) # 输出: 1# ** 是幂运算print(2 ** 4) # 输出: 16 (2的4次方)
实战技巧:
它们是 if 语句的灵魂,负责比较大小、判断真假。六大比较:== (等于), != (不等于), > (大于), < (小于), >= (大于等于), <= (小于等于)age = 18if age >= 18: print("欢迎来到成年人的世界!")# 字符串也可以比较大小(按字典序)print('apple' < 'banana') # 输出: True
== 判断的是两个变量的值是否相等。
is 判断的是两个变量是否指向同一个内存地址。
我们后面会详细讲 is,现在你只需要记住:比较值的时候,永远用 ==!
优雅技巧:链式比较
# 不优雅的写法if x > 0 and x < 10: ...# 优雅的写法if 0 < x < 10: ...
3. 赋值运算符:简洁的魔法 ✨
除了最常见的 =,还有一系列“复合赋值运算符”,能让你的代码更简洁。
基础赋值:=
复合赋值:+=, -=, *=, /= 等
score = 100# 传统写法score = score + 10# 简洁写法score += 10 # 等价于 score = score + 10print(score) # 输出: 110
新式武器:海象运算符 := (Python 3.8+)# 传统写法count = len(my_list)if count > 10: print(f"列表太长了,有 {count} 个元素")# 海象运算符写法if (count := len(my_list)) > 10: print(f"列表太长了,有 {count} 个元素")
and, or, not 是构建复杂判断逻辑的三剑客。score = 85attendance = 95# 成绩和出勤率都达标才能获得奖学金if score >= 80 and attendance >= 90: print("恭喜获得奖学金!")# 只要有一门课及格,就能毕业if math_score >= 60 or english_score >= 60: print("恭喜毕业!")
user_input = ""# 如果用户输入为空,则使用默认值username = user_input or "匿名用户"print(username) # 输出: 匿名用户
判断一个元素是否存在于一个序列(如列表、字符串、元组)中。permissions = ["admin", "editor", "viewer"]if "admin" in permissions: print("拥有管理员权限")if "superadmin" not in permissions: print("不是超级管理员")
性能提示:在 set 和 dict 中使用 in 的速度远快于在 list 中,因为它们是哈希结构。前面提到了 is,它用于判断两个变量是否是同一个对象。a = [1, 2, 3]b = a # b 是 a 的别名,指向同一个对象c = [1, 2, 3] # c 是一个新对象,只是值和 a 相同print(a == b) # True (值相等)print(a is b) # True (是同一个对象)print(a == c) # True (值相等)print(a is c) # False (不是同一个对象)
陷阱:Python会对一些小的整数(通常是-5到256)和短的字符串进行缓存。所以对于这些对象,is 可能会意外返回 True。但不要依赖这个特性,判断值是否相等,请坚持使用 ==!&, |, ^, ~, <<, >> 这些是直接操作二进制位的运算符,在常规业务开发中不常用,但在性能优化、图形学、加密算法等领域是神器。这里我们简单了解一下。
应用场景:
混淆 == 和 is:切记,== 比值,is 比身份(内存地址)。
整数除法精度:10 / 3 是 3.333...,10 // 3 才是 3。
逻辑运算符的优先级:not > and > or。如果不确定,就用括号 () 来明确顺序!
四、速查表:运算符优先级
从高到低,记不住没关系,善用括号是王道!
运算符是编程的基石,熟练掌握它们,你的代码才能写得更准、更快、更优雅。