小编Yan*_*ann的帖子

在python中,返回在函数体中创建的对象会对其进行深层复制吗?

我将尝试澄清:

例如,我制作了一个在本地创建列表并返回列表的函数。Python如何创建在函数体外部存在的返回列表?它是否使用“ deepcopy”(或类似的东西)?

In [50]: def create_list():
    ...:     sublist1 = [1,2,3]
    ...:     sublist2 = [4,5,6]
    ...:     list_of_lists=[sublist1,sublist1,sublist2]
    ...:     return list_of_lists
    ...: 

In [51]: l=create_list()

In [52]: l
Out[52]: [[1, 2, 3], [1, 2, 3], [4, 5, 6]]

In [53]: l[0].append(4)

In [54]: l
Out[54]: [[1, 2, 3, 4], [1, 2, 3, 4], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)

在这里,返回的列表l仍然包含子列表。并且l[0]并且l[1]仍然引用相同的子列表(这是正常的Python行为)。因此,复制了列表及其结构。

如果我再打一次电话create_list()

In [55]: l2=create_list()

In [56]: l2
Out[56]: [[1, 2, 3], [1, 2, 3], [4, 5, …
Run Code Online (Sandbox Code Playgroud)

python copy return-value deep-copy

5
推荐指数
1
解决办法
5907
查看次数

标签 统计

copy ×1

deep-copy ×1

python ×1

return-value ×1