python中的函数return是浅拷贝还是深拷贝?
In python, is a function return a shallow or deep copy?
在python中,如果我有
x = y
对 x 的任何修改也会修改 y,我可以做到
x = deepcopy(y)
如果我想在处理 x 时避免修改 y
相反,我有:
myFunc():
return y
def main():
x = myFunc()
是否仍然是修改 x 会修改 y,或者因为它是来自另一个函数的 return,所以它会像深度复制一样?
在python中一切都是参考。除非您明确复制,否则不会复制任何内容。
在您的示例中,x
和 y
引用同一个对象。
这将是一个浅拷贝,因为没有明确复制任何内容。
def foo(list):
list[1] = 5
return list
例如:
>>> listOne = [1, 2]
>>> listTwo = [3, 4]
>>> listTwo = listOne
>>> foo(listTwo)
[1, 5]
>>> listOne
[1, 5]
在python中,如果我有
x = y
对 x 的任何修改也会修改 y,我可以做到
x = deepcopy(y)
如果我想在处理 x 时避免修改 y
相反,我有:
myFunc():
return y
def main():
x = myFunc()
是否仍然是修改 x 会修改 y,或者因为它是来自另一个函数的 return,所以它会像深度复制一样?
在python中一切都是参考。除非您明确复制,否则不会复制任何内容。
在您的示例中,x
和 y
引用同一个对象。
这将是一个浅拷贝,因为没有明确复制任何内容。
def foo(list):
list[1] = 5
return list
例如:
>>> listOne = [1, 2]
>>> listTwo = [3, 4]
>>> listTwo = listOne
>>> foo(listTwo)
[1, 5]
>>> listOne
[1, 5]