场景一:不使用copy拷贝可变变量
def fib(n, l=None):
print(f'原本l:{id(l)},{l}')
import copy
# l = copy.copy(l)
print(f'原本l:{id(l)},{l}')
for i in range(n):
l.append(l[i] + l[i + 1])
print(f'原本l:{id(l)},{l}\n')
l = [1, 2] # 定义可变变量l
fib(3, l)
fib(3, l)
执行结果:
可变变量 l 的 id 完全一样
第一次调用后 l = [1, 2, 3, 5, 8]
第二次调用时,l = [1, 2, 3, 5, 8],append后l = [1, 2, 3, 5, 8, 3, 5, 8]
场景二:使用copy拷贝可变变量
def fib(n, l=None):
print(f'原本l:{id(l)},{l}')
import copy
l = copy.copy(l) # copy生成原l列表的副本
print(f'副本l:{id(l)},{l}')
for i in range(n):
l.append