请注意,当传递的参数是对象时,复制参数并更改复制属性的值也会更改原始属性的值(浅复制)。但是,当传递的对象是简单变量时,创建和更改副本的值不会更改原始副本(深度副本)
1。作为参数传递的变量
def increment(x):
y = x
y += 1
print(f'{x=}, {y=}')
increment(2)
Out:
x=2, y=3
x
在其副本y
增加时未更改
2。对象作为参数传递
class Node:
def __init__(self, val=0):
self.val = val
def increment(x):
y = x
y.val += 1
print(f'{x.val=}, {y.val=}')
increment(Node(2))
Out:
x.val=3, y.val=3
当copyy.val
增加时x.val
也增加
创建对象的深度副本的最佳(计算时间效率)方法是什么?我可以用一种不必对函数代码进行任何更改的方式编写类吗
目前没有回答
相关问题 更多 >
编程相关推荐