python 函数参数_python学习——理解python函数参数的传递
当我们在写python代码时,在传递参数的时候,是否遇到过这样的问题(在函数中更改参数的值或对参数进行操作后,外面的实参有时改变了,有时没有)如果不弄懂什么情况会变什么情况不会变,那么整个代码就很容易出错。
· python的内存机制:
每个值都是对象,存储在内存中,有一个对应的地址,变量名引用了这个地址。
一般情况下,我们在函数内部直接修改形参的值不会影响到实参,因为修改后,这个变量就跟实参没有关系了,是一个新的变量了。
通过代码结果进行对比,可以发现,调用modify1函数后,可以看到在函数内直接修改参数后,函数内的参数和外面的实参不是指向同一个对象,并且外面的实参没有改变
调用modify2函数后,在函数内对参数的内容进行操作,函数内的参数和外面的实参仍然指向同一个对象,并且外面的实参也跟着一起改变了。
之所以调用modify2函数后为什么参数和实参为什么指向同一个对象,是因为没对参数进行更改,而是对参数内部的对象进行更改,通过查ls[0]的ID可以发现,ls[0]调用前和调用后指向的不是同一个对象。