练2-深浅拷贝,引用,变与不变

小试牛刀

下面的题打印结果是什么

from copy import copy, deepcopy


def cal(arg: list):
    arg[0] = 1
    arg[1].append(2)
    # arg[2].append(3)
    arg[3][3].pop()
    arg[4] = "hi"


if __name__ == '__main__':
    A = [0, [1, 1], (2, 2), {3: [3, 4, ]}, "hello"]
    A2 = [0, [1, 1], (2, 2), {3: [3, 4, ]}, "hello"]
    B = copy(A)
    cal(B)
    C = A
    D = deepcopy(A2)
    cal(D)
    # print(C)
    print("改变了的浅拷贝原数据:", A)
    print("浅拷贝靠引用改变原数据:", B)
    print("原数据:", A2)
    print("深拷贝不会改变原数据:", D)

"""
在运行完cal(B)之后,B全改了,A可变的部分变了。
"""

总结

  做完之后,把代码debug一遍,仔细分析。

上一篇:TS简明教程(3)——泛型


下一篇:pytest 参数化