list1 和 list3 相等的问题
这节课前面老师讲了,Python对比较小的数字和比较短的字符串会做内存的优化,但是比较大的数字就会分开存储,那么后面代码中 list1 和 list3 是因为内容足够简单,所以才使用了同一块内存么?因为我觉得 list1 和 list3 毕竟是两个变量,应该分开存储吧?
正在回答
同学,你好。下边是两种不同的写法,同学可以参考一下:
例1:当list1为默认参数时,再进行初始化时,list1的值会根据append的添加而进行叠加,不再是空列表。
例2:当类的写法是下图中时,每次执行__init__进行初始化时,每次实例化时都空列表。list1都会重新进行赋值。
首先, 比较短的会内存优化,使用同一块内存仅限于基本类型,也就是int , boolean, string等; list是引用类型, 不在其中, 所以是说的 "那么后面代码中 list1 和 list3 是因为内容足够简单,所以才使用了同一块内存么"这个不成立
其次, list1和list3使用同一块内存的原因是,他们传参的时候都使用了默认值l,没有传递新的list进去, 因此调用方法的时候,没有new新的list(没有开辟新的内存)使用的就是原来的list. 如果你想让list1和list3使用两个不同的list,可以自己new 2个list当做参数传进去,像list2一样 每次new对象的时候 都会开辟一个新的内存
希望可以解答你的疑问
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星