七、赋值运算符学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-assignment-operators-notes-7
summary
赋值运算符看起来是最简单的,但里面的门道不少!特别是复合赋值运算符(+=、-=这些),刚开始我总搞不清它们和普通的
a = a + b 有什么区别。还有链式赋值和多重赋值,让我感受到了 Python 的简洁之美。最惊喜的是 x, y = y, x 这种交换变量的写法,太优雅了!也是在后面学到解包时才知道的.tags
Python数据的存储与运算
category
Python基础
icon
password
💡 学习感悟:赋值运算符看起来是最简单的,但里面的门道不少!特别是复合赋值运算符(+=、-=这些),刚开始我总搞不清它们和普通的a = a + b有什么区别。还有链式赋值和多重赋值,让我感受到了 Python 的简洁之美。最惊喜的是x, y = y, x这种交换变量的写法,太优雅了!也是在后面学到解包时才知道的.
1. 什么是赋值运算符?
我的理解
程序的核心是处理数据,而数据需要存储在变量中。赋值运算符的作用就是将数据存放到变量中,或者修改变量中已有的数据。
📝 我的理解:赋值运算符就像是贴标签——把数据贴上变量名这个标签,以后就可以通过标签找到数据。age = 18不是说"age 等于 18",而是说"把 18 存到 age 这个盒子里"。
2. 基本赋值运算符 =
2.1 基本用法
2.2 赋值的本质
赋值是什么意思?
在 Python 中,赋值
= 不是数学中的"等于",而是"将右边的值存储到左边的变量中"。📝 我的理解:a = a + 5在数学上是矛盾的(a 不可能等于 a+5),但在编程里完全合理!意思是"把 a 原来的值加 5,然后把结果存回 a"。就像是往盒子里放新东西,把原来的替换掉。
3. 复合赋值运算符
为什么需要复合赋值运算符?
当需要对变量自身进行运算时,复合赋值运算符可以让代码更简洁、更易读。
3.1 算术复合赋值运算符
运算符 | 等价写法 | 描述 | 示例 |
+= | a = a + b | 加后赋值 | a += 5 |
-= | a = a - b | 减后赋值 | a -= 3 |
*= | a = a * b | 乘后赋值 | a *= 2 |
/= | a = a / b | 除后赋值 | a /= 4 |
//= | a = a // b | 整除后赋值 | a //= 2 |
%= | a = a % b | 取余后赋值 | a %= 3 |
**= | a = a ** b | 幂运算后赋值 | a **= 2 |
📝 我的理解:复合赋值运算符就像是快捷方式——a += 5比a = a + 5少写了一个 a,看起来更简洁。而且意思很明确:"在 a 的基础上加 5"。
3.2 实际应用场景
场景 1:累加求和
场景 2:计数器
场景 3:累乘
场景 4:字符串拼接
📝 我的理解:+=对数字是加法,对字符串是拼接,这个特性很灵活!在循环中累加求和、计数、拼接字符串时,复合赋值运算符特别方便。
4. 特殊赋值方式
4.1 链式赋值
什么是链式赋值?
同时给多个变量赋相同的值。
实际应用
📝 我的理解:链式赋值就像是批量贴标签——把同一个数据贴上多个标签。适合初始化多个变量为相同值的场景,比如游戏坐标初始化。
4.2 多重赋值(元组解包)
什么是多重赋值?
同时给多个变量赋不同的值。
📝 我的理解:多重赋值是 Python 的优雅特性!特别是x, y = y, x这种交换变量的写法,不需要临时变量,一行搞定。这在其他语言里要写三行呢!
实际应用
4.3 扩展解包(Python 3+)
📝 我的理解:扩展解包就像是分拣包裹——把列表里的元素分拣到不同的变量里。*rest会捕获剩下的所有元素,_用来占位表示"我不关心这个值"。这在处理函数返回值时特别有用。
5. 赋值运算符的优先级
赋值运算符的优先级如何?
赋值运算符的优先级最低,在表达式中最后执行。
📝 我的理解:赋值运算符就像是最后一步——等所有计算都完成了,才把结果存到变量里。所以a = 10 + 5 * 2会先算10 + 5 * 2,再把结果 20 赋给 a。
6. 实际应用案例
6.1 成绩统计
📝 我的理解:成绩统计用到了多个复合赋值运算符。total += score累加分数,count += 1计数,同时用比较运算符更新最大最小值。这种统计模式很常用。
6.2 数字累加器
📝 我的理解:这个例子展示了+=和*=的用法。累加从 0 开始,累乘从 1 开始(因为 1 是乘法的单位元)。这种累加累乘的模式在数学计算中很常见。
6.3 累加求和与平均值
📝 我的理解:这个例子展示了如何在循环中使用复合赋值运算符进行累加和计数。total += num累加输入的数字,count += 1记录输入的次数。最后计算平均值。
7. 遇到的问题和解决
7.1 混淆赋值和比较
⚠️ 踩坑记录:这个错误我犯了无数次!=是赋值,==才是比较。现在我会在心里默念:"等于等于才是比较",这样就不容易错了。
7.2 未初始化就使用
⚠️ 踩坑记录:刚开始学的时候,我经常在循环里直接用变量,结果报错NameError。现在我知道了,使用变量前一定要先赋值初始化,特别是做累加、计数的时候,初始值通常是 0。
7.3 复合赋值的返回值
⚠️ 踩坑记录:我曾经想把a += 5的结果直接赋给另一个变量,结果报错了。原来赋值语句本身没有返回值(除了海象运算符:=)。要分开写:先a += 5,再b = a。
7.4 可变对象的赋值
⚠️ 踩坑记录:这个坑让我调试了好久!list2 = list1并没有创建新列表,而是让 list2 也指向 list1 指向的那个列表。修改 list2 就是修改 list1!如果需要复制,要用copy()或切片[:]。
8. 核心知识点整理
8.1 赋值运算符速查表
运算符 | 含义 | 示例 | 等价于 |
= | 基本赋值 | a = 10 | - |
+= | 加后赋值 | a += 5 | a = 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 **= 2 | a = a ** 2 |
8.2 特殊赋值方式
- 链式赋值:
a = b = c = 10(多个变量赋相同值)
- 多重赋值:
a, b, c = 1, 2, 3(多个变量赋不同值)
- 交换变量:
x, y = y, x(Python 特色,无需临时变量)
- 扩展解包:
first, *rest = [1, 2, 3, 4, 5](捕获剩余元素)
8.3 常见错误总结
错误类型 | 错误示例 | 正确写法 |
赋值当比较 | if a = 10 | if a == 10 |
未初始化使用 | print(total) | total = 0; print(total) |
可变对象直接赋值 | list2 = list1 | list2 = list1.copy() |
复合赋值当表达式 | b = (a += 5) | a += 5; b = a |
8.4 需要注意的
- 累加、计数、拼接字符串时用复合赋值运算符
- 交换变量用
x, y = y, x优雅永不过时,哈哈.
- 函数返回多个值时用多重赋值接收
- 可变对象赋值时注意是引用还是复制
Loading...
