Python3 运算符超详细新手教程(全分类 + 逐例讲解 + 避坑指南)
运算符就是用来对数据进行计算、比较、逻辑判断的符号,是写代码的基础工具。Python 运算符共分 7 大类,我会从最常用的开始讲,每个都配可运行的例子和结果,零基础也能看懂。
前置说明
- 所有运算符的符号、标点必须是英文半角,中文符号直接报错
- 运算有优先级,不确定的时候加括号
() 最稳妥,不会出错 - 本文所有代码都可以直接复制到 Python 解释器里运行验证
一、算术运算符(最基础,做数学计算)
用来做加减乘除等数学运算,是新手第一个要掌握的。
| | | | |
|---|
+ | | | a + b | 13 |
- | | | a - b | 7 |
* | | | a * b | 30 |
/ | | | a / b | 3.3333333333333335 |
// | | | a // b | 3 |
% | | | a % b | 1 |
** | | | a ** b | 1000 |
1. 基础数值计算示例
a = 10b = 3print("加:", a + b) # 加: 13print("减:", a - b) # 减: 7print("乘:", a * b) # 乘: 30print("浮点除:", a / b) # 浮点除: 3.3333333333333335print("整除:", a // b) # 整除: 3print("取余:", a % b) # 取余: 1print("10的3次方:", a ** b) # 10的3次方: 1000
2. 重点易错点(新手必踩坑)
坑 1:/ 和 // 完全不同
print(6 / 2) # 3.0 (浮点数)print(6 // 2) # 3 (整数)print(9 // 2) # 4 (直接砍掉0.5,不是5)
坑 2:负数整除是「向下取整」,不是截断小数
向下取整 = 往更小的数字靠,新手非常容易算错
print(5 // 2) # 2 (正常)print(-5 // 2) # -3 (不是-2!因为-3比-2更小,向下取整)print(-5 % 2) # 1 (余数和除数同号,2是正的,余数就是正的)
3. 字符串的特殊算术运算
+ 和 * 也能用于字符串,规则和数字不一样:
# 字符串拼接s1 = "Hello"s2 = "Python"print(s1 + s2) # HelloPython# 字符串重复print("加油!" * 3) # 加油!加油!加油!
⚠️ 注意:数字和字符串不能直接 +,会报错,必须先转类型。
二、赋值运算符(给变量存值)
核心作用:把右边的值,赋值给左边的变量。最基础的是 =,还有复合赋值运算符。
| | | |
|---|
= | a = 10 | | |
+= | a += 5 | a = a + 5 | |
-= | a -= 5 | a = a - 5 | |
*= | a *= 5 | a = a * 5 | |
/= | a /= 5 | a = a / 5 | |
//= | a //= 5 | a = a // 5 | |
%= | a %= 5 | a = a % 5 | |
**= | a **= 2 | a = a ** 2 | |
示例演示
num = 10 # 基础赋值print(num) # 10num += 5 # 等价于 num = num + 5 → 10+5=15print(num) # 15num -= 3 # 15-3=12print(num) # 12num *= 2 # 12*2=24print(num) # 24num /= 4 # 24/4=6.0 (除法默认浮点数)print(num) # 6.0
新手注意
- 赋值是从右往左算:先算右边的表达式,再把结果存给左边的变量
=
三、比较运算符(判断大小 / 相等,结果只有 True/False)
用来对比两个值,运算结果一定是布尔值:True(成立)或 False(不成立),是条件判断的核心。
| | | |
|---|
== | | a == 10 | True |
!= | | a != b | True |
> | | a > b | True |
< | | a < b | False |
>= | | a >= 10 | True |
<= | | b <= 2 | False |
示例演示
x = 20y = 15print(x == y) # False 20不等于15print(x != y) # True 20不等于15,成立print(x > y) # Trueprint(x < 10) # Falseprint(x >= 20) # True 大于等于,相等也算成立print(y <= 15) # True
补充说明
- 字符串也能比较:按字符的 ASCII 编码大小比,小写字母 > 大写字母
print("a" > "A") # Trueprint("abc" < "abd") # True 逐个字符对比,前两个相同,c < d
- 布尔值参与数值比较:
True 等价于 1,False 等价于 0 print(True == 1) # Trueprint(False == 0) # True
四、逻辑运算符(多条件组合,条件判断必用)
用来把多个条件拼在一起,实现「并且、或者、反过来」的逻辑,结果也是布尔值。
| | | | |
|---|
and | | 两边全部为 True,结果才是 True;有一个 False 就为 False | 5>1 and 3>2 | True |
or | | 两边任意一个为 True,结果就是 True;全 False 才是 False | 5<1 or 3>2 | True |
not | | True 变 False,False 变 True | not 5>1 | False |
1. 基础示例
age = 25score = 85# and:两个条件都要满足print(age >= 18 and score >= 80) # True 年龄达标+分数达标print(age >= 30 and score >= 80) # False 年龄不达标,整体不成立# or:满足一个就行print(age >= 30 or score >= 90) # False 两个都不满足print(age >= 18 or score >= 90) # True 年龄满足就行# not:反过来print(not age >= 18) # False 年龄>=18是True,取反变False
2. 重点:短路特性(新手必懂)
逻辑运算有「偷懒机制」,能确定最终结果时,后面的代码就不执行了:
- and 短路:左边是 False,直接返回 False,右边代码完全不执行
- or 短路:左边是 True,直接返回 True,右边代码完全不执行
示例验证
# 定义一个函数,调用就会打印文字def test(): print("我被执行了") return True# and 左边是False,右边不执行print("---and短路测试---")print(False and test()) # 只输出 False,不会打印"我被执行了"# or 左边是True,右边不执行print("---or短路测试---")print(True or test()) # 只输出 True,不会打印"我被执行了"
3. 优先级
三个逻辑运算符优先级:not > and > or 不确定就加括号,最稳妥:
# 不加括号:先算and,再算orprint(True or False and False) # True# 加括号:先算or,再算andprint((True or False) and False) # False
五、成员运算符(判断元素是否在容器里)
用来判断「某个值是否在字符串、列表、字典等容器中」,处理数据时非常常用。
| | | |
|---|
in | | "a" in "apple" | True |
not in | | 5 not in [1,2,3] | True |
1. 不同场景示例
① 判断字符串中是否包含某个字符
word = "Python"print("P" in word) # Trueprint("x" in word) # Falseprint("th" in word) # True 也可以判断连续子串
② 判断列表中是否有某个元素
fruits = ["苹果", "香蕉", "橙子"]print("香蕉" in fruits) # Trueprint("西瓜" in fruits) # False
③ 判断字典中是否有某个键
⚠️ 注意:字典默认判断的是键(key),不是值
student = {"name":"小明", "age":18}print("name" in student) # True 键存在print("小明" in student) # False 不能直接判断值
六、身份运算符(判断是不是同一个对象)
用来判断两个变量是不是同一个内存地址的对象,通俗说就是「是不是同一个东西」。
核心区别:== 和 is 完全不一样
示例 1:数值的小整数池
Python 对小整数(-5~256)做了优化,相同数值会复用同一个对象
a = 10b = 10print(a == b) # True 值相等print(a is b) # True 同一个对象,内存地址相同print(id(a), id(b)) # 两个id一样,id()用来查看内存地址
示例 2:列表的对比(最能体现区别)
两个列表内容完全一样,但它们是两个独立的对象,内存地址不同
list1 = [1,2,3]list2 = [1,2,3]print(list1 == list2) # True 内容完全一样print(list1 is list2) # False 不是同一个对象print(id(list1), id(list2)) # 两个id不一样
新手建议
日常判断值相等就用 ==,is 一般用来判断 None、布尔值这种特殊场景:
flag = Noneif flag is None: print("是空值")
七、位运算符(新手了解即可,前期用不到)
直接操作二进制位的运算符,底层开发、算法优化才会用到,新手先知道有就行。
简单示例
a = 6 # 二进制:0110b = 3 # 二进制:0011print(a & b) # 2 (0010)print(a | b) # 7 (0111)print(a << 1) # 12 左移1位,相当于乘2
八、运算符优先级(新手必看,避免算错)
运算有先后顺序,从高到低排列如下,记不住就加括号,永远不会错。
示例验证
# 先算乘除,后算加减print(2 + 3 * 4) # 14 先算3*4=12,再加2# 加括号改变顺序print((2 + 3) * 4) # 20 先算括号里的5,再乘4
九、新手高频易错点总结
= 和 == 混淆- 除法搞混:
/ 结果一定是浮点数,// 是整除取整,负数会向下取整 - 逻辑运算优先级:
not > and > or,复杂表达式一定要加括号 - 字符串和数字不能直接
+ in 判断字典默认判断键:想判断值需要用 值 in 字典.values()is 和 == 不分