您的位置:首页 > 编程语言 > Python开发

python对象引用引起的问题

2016-11-17 22:24 162 查看
我们都知道python中一切皆是对象,这句话我记得很清楚,但是平时用起来确也容易混淆。

今天遇到一个bug,大概情况是这样:

a = [1,2,3]
b = [11,22,33]
c = [a,b]
print c

# c = [[1, 2, 3], [11, 22, 33]]


我在一个文件中修改了a,而在另一个列表中读c,结果发现c总是不对…..检查好久才想起来了,c中存贮的a应该是a的引用,也就是python中常见的对象浅拷贝。测试一下:

a[0] = 5
print c

# c = [[5, 2, 3], [11, 22, 33]]


以后一定要注意啊,特别是多处读写的敌方,很容易忽视!

如果在c中独自保留a的副本,则应该使用copy。

a = [1,2,3]
b = [11,22,33]
np.copy(a)
c = [np.copy(a), b]
print c
a[0] = 5
print c

#[array([1, 2, 3]), [11, 22, 33]]
#[array([1, 2, 3]), [11, 22, 33]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 对象 引用 list
相关文章推荐