Python中的传值和引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的传值和引用的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的传值与传引用

PHP基础终极版-面试大全 深度理解变量的传值和引用

函数参数的传值和传指针有什么区别?

C语言函数中的传值和传址

java的传值方式

请教:php如何实现json的传值