Python中的传值和引用

内容不对请指正!十分感谢!

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中的深浅拷贝,赋值及引用


下一篇:python学习(九)python中的变量、引用和对象的关系