对象引用、可变性与拷贝
Python 数据类型、函数与异常处理#Python全栈#第二阶段#Python 数据类型、函数与异常处理#对象引用、可变性与拷贝约 549 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
赋值是否一定会复制一个对象?
追问 如何通过修改列表和重新绑定名称区分“共享对象”与“共享变量”?
可变对象与不可变对象在函数调用中有什么差异?
追问 函数修改列表内容与给形参重新赋值,对调用者分别有什么影响?
== 与 is 分别判断什么?
追问 为什么不能依赖小整数或字符串的实现优化,用
is 判断业务内容相等?浅拷贝与深拷贝有什么区别?
追问 包含用户字典的列表进行浅拷贝后,修改内部字典会影响哪一份数据?
预测 a = [[1]]; b = a.copy(); b[0].append(2) 后两者的值。
追问 如何创建嵌套内容独立的副本?是否所有业务都适合深拷贝?
rows = [[]] * 3 创建了几个独立的内部列表?
追问 修改一个元素后其他行为什么可能变化?如何正确初始化独立行?
dict.fromkeys(keys, []) 在追加值时可能有什么问题?
追问 如何确保每个 Key 对应独立列表,并验证没有共享?
列表的 += 与 a = a + other 对已有别名有什么不同?
追问 用
a = [1]; b = a 分别实验,解释原地修改与重新绑定。del name、清空列表和删除列表中的元素有什么区别?
追问 其他名称仍引用同一对象时,删除一个名称是否意味着对象立即消失?
函数应该修改传入数据,还是返回新数据?
追问 如何通过命名、文档和测试明确副作用,避免调用者误用?