本帖最后由 阿奇_o 于 2022-10-10 21:11 编辑
关键1:搞清楚 操作的是什么对象 —— 具体什么操作? 针对哪个对象?
以你提到的 a = a + [4,5] 和 a += [3] 的不同之处:
前者是 两个列表的相加操作,
会返回新的列表对象;后者是 “扩展运算符”或叫“增量赋值运算符” 的运算操作,是
就地改变原来的a
(等到学到OOP且比较深入时,你就会了解 定义一个python对象时,如果实现 __add__ 就可以自定义相加的行为和返回,而 __iadd__ 就可以自定义后者 += 的行为和返回)
a = b = [1,2]
id(a) == id(b)
True
id(a)
2556956942336
a += [3]
id(a)
2556956942336
a
[1, 2, 3]
a = a + [3]
id(a)
2556988297344
a
[1, 2, 3, 3]
id(b)
2556956942336
id(a) == id(b)
False
b
[1, 2, 3]
关键2:对象 到底是什么? 为什么说你看不见它,却可以 调用/使用 它?
- 为什么我对象可以叫a,b,c,x,y,z, 可以叫 小兰,也可以叫 亲爱的? ——
唤之以名。(可 叫它,叫它"老婆" 它就一定会来吗,一定会满足你的要求吗?)
- 对象的类型type 不同会对各种操作有什么影响?(你对象是男是女的?对生娃肯定又影响!如 list就是“可变的”,str, tuple就是“不可变的”。)
- 对象的id, id(obj) 是什么?有什么用? (你对象是不是你的“唯一”? 。。哈哈哈)
- 对象的value,可以看做 值,延伸出来就是 属性和方法。 (你对象的颜值多少?身高多少?会做饭么?... )
ps: 关于对象的具体代码例子,我懒得敲了,我以前回答的帖子,已经举出足够多了。。