gpt4 book ai didi

python - 深度复制所有函数参数

转载 作者:行者123 更新时间:2023-11-28 22:19:39 25 4
gpt4 key购买 nike

我有以下问题。我有一个将 2 个列表作为参数的函数。为了不改变它们中的任何一个,我想使用 copy 模块并创建两者的 deepcopy

到目前为止,我只走了这么远:

import copy 

def f(a1, a2):
a1 = copy.deepcopy(a1)
a2 = copy.deepcopy(a2)
# Rest of function code below.

我个人认为这段代码看起来不太好。有这样的就更好了

import copy 

def f(a1, a2):
newdeepcopy(locals())
# Rest of function code below. The same code as above.

newdeepcopy 函数应该将局部变量作为参数,并仅在 f 的范围内重新定义变量 a1 和 a2。这可能吗?

最佳答案

使用装饰器怎么样?

代码:

def deep_copy_params(to_call):
def f(*args, **kwargs):
return to_call(*copy.deepcopy(args), **copy.deepcopy(kwargs))
return f

测试代码:

import copy

@deep_copy_params
def test(a, b, c=0):
print(a, b, c)
a[1] = 3
b[2] = 4
c[3] = 5
print(a, b, c)

aa = {1: 2}
bb = {2: 3}
cc = {3: 4}

test(aa, bb, cc)
print(aa, bb, cc)

结果:

{1: 2} {2: 3} {3: 4}
{1: 3} {2: 4} {3: 5}
{1: 2} {2: 3} {3: 4}

关于python - 深度复制所有函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com