码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的传值和引用

时间:2016-12-28 01:52:11      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:相同   元素   代码   列表   操作   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中的传值和引用

标签:相同   元素   代码   列表   操作   python   pre   自己   blog   

原文地址:http://www.cnblogs.com/Mu001999/p/6227994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!