前几天在做项目的过程中发现了一个问题,向函数中传入一个list,在函数体内将其赋值给list,对list1操作后发现list也发生了变化,啊 ! 出乎意料。查了一下原因,原来python里有可变对象和不可变对象之分。只有传入的是不可变对象时,值才不发生改变,若是可变对象,充当函数参数时要注意了。
不可变对象:Number ,String , Tuple,bool
可变对象: List , Set , Dictionary是可以改变内部的元素
python函数中的参数 , 传的是变量引用的副本 , 它与变量指向同一个值,要想不改变原list,函数内部用copy.deepcopy(传入参数)
原文:https://www.cnblogs.com/wodepingzi/p/14401585.html