在python中,如果我有
x = y
对x的任何修改也会修改y,我可以做
x = deepcopy(y)
如果我想避免在处理x
时修改y相反,我说:
myFunc():
return y
def main():
x = myFunc()
是否仍然需要修改x来修改y,或者因为它是从另一个函数返回它会像深度复制一样?
答案 0 :(得分:12)
在python中,一切都是引用。除非您明确复制它,否则不会复制任何内容。
在您的示例中,x
和y
引用相同的对象。
答案 1 :(得分:3)
这将是一个浅层副本,因为没有明确复制过任何内容。
def foo(list):
list[1] = 5
return list
例如:
>>> listOne = [1, 2]
>>> listTwo = [3, 4]
>>> listTwo = listOne
>>> foo(listTwo)
[1, 5]
>>> listOne
[1, 5]