小试牛刀
下面的题打印结果是什么
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一遍,仔细分析。