python对象引用引起的问题

    xiaoxiao2021-08-17  119

    我们都知道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]]
    转载请注明原文地址: https://ju.6miu.com/read-676509.html

    最新回复(0)