没有系统地学习过python,最近在append的使用上遇到了大问题,吃到了苦头
之前一直单纯地认为通过append把数添加到list中,不需要提前开空间,非常便利,但却没有意识到这个过程并不是值传递,借用简书博主Mr_Bluyee的说法,这是传对象(call by object),因为在python中一切皆为对象
那这个问题具体是什么样的呢?还是用例子来说明吧
定义了一个list s,将生成的数组 t 放进去,改变 t 中的一个值,再放进 s ,预想的结果是前后两个 t 是不一样的
然而结果并非如此
原因是append传对象,对象改变的话,前后传进去的都会受到影响,如果不想受到影响的话,我最初找到的方法是重新定义
后来我发现,这个方法有很大的局限性,如果用copy()这个函数,就可以不用重新定义,同时保证传入的 t 不会跟着一起变