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中一切都是参考。除非您明确复制,否则不会复制任何内容。

在您的示例中,xy 引用同一个对象。

这将是一个浅拷贝,因为没有明确复制任何内容。

def foo(list):
    list[1] = 5
    return list

例如:

>>> listOne = [1, 2]
>>> listTwo = [3, 4]
>>> listTwo = listOne
>>> foo(listTwo)
[1, 5]
>>> listOne
[1, 5]