标签:相同 元素 代码 列表 操作 python pre 自己 blog
我写这个主要是给自己看,内容也就是便于自己理解,可能会不正确,但目前来看代码测试的结果是对的。
python中一切皆对象。
当我们赋值时: a = 1
其实是先创建了一个整数常量1(也是一个对象,且已经为它分配了内存),然后将它的地址传递给了a
当我们将a的值赋值给b时: b = a ,其实也是将1的地址传递给了b
接下来查看a和b的地址
id(a)
id(b)
会发现两者相同
所以如果执行 a = 2 ,a的地址就会改变,再执行 a = 1 之后,a的地址又会变成原来的值
而当操作自己定义的class类实例的时候
变量名亦是存储的地址,赋值与值的改变也是传递的地址,基本上都相当于引用,单纯的传值其实也是变相分配新内存。
比如执行
a = [1,2,3] b = a[:2] id(a) id(b)
id(a)和id(b)就会相差甚远,因为在创建b的时候其实是将a的列表中的元素先切片切出来之后再分配一个新的内存空间给它,再将其地址传给b。
标签:相同 元素 代码 列表 操作 python pre 自己 blog
原文地址:http://www.cnblogs.com/Mu001999/p/6227994.html