您好,匿名用户
随意问技术百科期待您的加入

Python 为什么要用变量值引用

0 投票
a = [1,3,5]
b = a
b[0] = 9
print a[0]

输出是 9
理由是:python 将常见类型的变量值做了引用,当b=a 时,实际上没有复制变量。
sys.getrefcount() 可以查看对某一值的引用次数

问题是:
为何要这么设计,这种设计在写代码的时候不会出现明显的bug么?
比如我需要在某个list基础上进行一些修改,但是以后会同时用到修改前和修改后的list,代码该怎么写呢?

用户头像 提问 2012年 12月1日 @ 随意问站长 上等兵 (310 威望)
分享到:

1个回答

0 投票
 
最佳答案

这就是完全面向对象的设计,我对python了解不多,不过我估计数组在python里应该是一个对象,而对对象某个属性的赋值,是只会改变引用的对象的。比如在php里面

$a = new stdClass();
$b = $a;
$b->c = 'test';
print_r($a);

它会显示

stdClass Object
(
    [c] => ddd
)
用户头像 回复 2012年 12月1日 @ Talon 上等兵 (294 威望)
选中 2012年 12月1日 @随意问站长
提一个问题:

相关问题

0 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Dante 上等兵 (290 威望)
0 投票
1 回复 36 阅读
用户头像 提问 2013年 9月12日 @ Virgo 上等兵 (284 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2013年 9月23日 @ Fizz 上等兵 (325 威望)
0 投票
0 回复 36 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...