a = [1,3,5] b = a b[0] = 9 print a[0]
输出是 9 理由是:python 将常见类型的变量值做了引用,当b=a 时,实际上没有复制变量。 sys.getrefcount() 可以查看对某一值的引用次数
问题是: 为何要这么设计,这种设计在写代码的时候不会出现明显的bug么? 比如我需要在某个list基础上进行一些修改,但是以后会同时用到修改前和修改后的list,代码该怎么写呢?
这就是完全面向对象的设计,我对python了解不多,不过我估计数组在python里应该是一个对象,而对对象某个属性的赋值,是只会改变引用的对象的。比如在php里面
$a = new stdClass(); $b = $a; $b->c = 'test'; print_r($a);
它会显示
stdClass Object ( [c] => ddd )
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。