[关闭]
@rulerstorm 2014-06-08T03:41:19.000000Z 字数 379 阅读 3787

python中的变量都是指针?

python

实验1:

  1. a=[1,2]
  2. b=a
  3. a.append(3)
  4. print b
  5. 输出:[1,2,3]

嗯,这样看起来python的变量都是指针。


实验2:

  1. a=1
  2. b=a
  3. a=2
  4. print b
  5. 输出:1

嗯?why?b不是指针吗?为什么这次b没有跟着a变呢?

来看看下面这个情况吧


实验3:

  1. a=[1,2]
  2. b=a
  3. a=[3]
  4. print b
  5. 输出:[1,2]

阿哈!这次b又没有跟着a变,为什么呢?
其实我们的猜想是正确的,python的变量的确都是指针,只是在重新被附值时,指向了另一个list,而不是像情况1那样,改变了那个list。
在情况2也是这样,第三句并不是a指向的1改变了,而是a的指向改变了。原来的1还在那里,没变。


那么,如果真的想复制list怎么办?

  1. b = a [:]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注