Python 为什么要用变量值引用
a = [1,3,5] b = a b[0] = 9 print a[0]
输出是 9
理由是:python 将常见类型的变量值做了引用,当b=a 时,实际上没有复制变量。
sys.getrefcount() 可以查看对某一值的引用次数
问题是:
为何要这么设计,这种设计在写代码的时候不会出现明显的bug么?
比如我需要在某个list基础上进行一些修改,但是以后会同时用到修改前和修改后的list,代码该怎么写呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
深复制和浅复制的问题啊。
python这样设计据说是在大部分情况下,b=a就是你想实现的效果,如果非要用的话可以b=a[:]。
为什么要这样设计,没有深入了解过。
复制一个list可以这样用:copied_list = original_list[:]
这里有更多相关说明:http://docs.python.org/library/copy.h...
这就是完全面向对象的设计,我对python了解不多,不过我估计数组在python里应该是一个对象,而对对象某个属性的赋值,是只会改变引用的对象的。比如在php里面
它会显示