Python中对象参数传递是如何实现引用传递的机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计511个文字,预计阅读时间需要3分钟。
在Python中,变量不再具有固定的类型,变量仅是对对象的引用。通常,我们使用变量来测试对象的类型,实际测试的是这个变量引用的对象的类型。Python使用的是递归对象。
大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型。
python采用的是传递对象的引用,为了方便说明,我们来看一个例子:
test = [1] def change1(a): a = [2] def change2(a): a.append(3) change1(test) change2(test) print test
我们来看一下最后的输出:
[1,3]
是不是有人误以为是[2,3]?那你可得好好看接下来的内容。
传参传的是对象的引用!!!!!!
所以在change1(a)函数中,我们知道形参a与test引用了同一块内存空间,然后a在函数内部被修改了,它执行了另一块内存空间,也就是存放[2]的地方,但是只是a的指向改变了,test的指向还是存放[1]的内存空间。所以,接下来change2()对这块内存空间上放的值进行了修改,就得到了我们最后看到的结果。
本文共计511个文字,预计阅读时间需要3分钟。
在Python中,变量不再具有固定的类型,变量仅是对对象的引用。通常,我们使用变量来测试对象的类型,实际测试的是这个变量引用的对象的类型。Python使用的是递归对象。
大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型。
python采用的是传递对象的引用,为了方便说明,我们来看一个例子:
test = [1] def change1(a): a = [2] def change2(a): a.append(3) change1(test) change2(test) print test
我们来看一下最后的输出:
[1,3]
是不是有人误以为是[2,3]?那你可得好好看接下来的内容。
传参传的是对象的引用!!!!!!
所以在change1(a)函数中,我们知道形参a与test引用了同一块内存空间,然后a在函数内部被修改了,它执行了另一块内存空间,也就是存放[2]的地方,但是只是a的指向改变了,test的指向还是存放[1]的内存空间。所以,接下来change2()对这块内存空间上放的值进行了修改,就得到了我们最后看到的结果。

