在python中list作函数形参,防止被实参修改的实现方法
本文将主要介绍这种错误的现象、原因和解决方法。从运行结果上,可以看出,虽然我们改变的是fun()内部的inner_lst,但是,外部的lst也随之改变了。因此,如果我们将一个列表传入一个函数的,运行这个函数,可能会破坏我们的原始数据,这可能并不是我们想要看到的。首先,我们解释一下上面这种情况的原因。在函数参数的传递过程中:对于inmutable object ,函数参数传递是值对于mutable object,函数参数传递是指针因此,当我们把lst传入fun()函数时,实际是把lst的指针传递给了inner_lst变量。所以,lst的值会随着inner_lst进行变化。整体从新赋值,不会改变实参。原因为形参和实参这两个标签指向的都是同样的一块列表。在函数中复制一个List,在新的List中进行排序。
用户评论