Python中的引用

首先什么是对象

Python中一切都是对象,而对象中包含三部分的信息:

身份:每一个对象都有唯一一个身份标识自己,使用内建函数id 可以看到这个标识的具体值,也就是变量的地址。

类型:对象的类型可以决定对象保存什么样的值,可以进行什么样的操作。以及遵守什么样的规则,实际上用内建函数type可以查看对象的类型。

值:表示对象具体保存的内容,有些对象的值可以修改,有些对象的值不可以修改,这个称为对象的可变性

Python中可以用id 这个内建函数查看变量的地址。

解释:给a重新赋值成200,相当于创建了一个200这样的对象,然后将变量名a 重新绑定到了200这个对象上.将a 赋值给b ,其实相当于又创建了一个变量名b ,并将b这个名字与200绑定在了一起。像创建a,b这样的变量名,其实只是一个对象的别名,后者叫对象的引用。

其实,按照我们一般的理解,也就是C的理解,a=2,相当于先创建了一个变量名a,a就是一个篮子(给a分配了内存空间),然后把数字2装在了a这个篮子中,但是Python中完全不是这样的。它其实是下面这样的

1.我们在解释器中输入a=2,首先有一个integer class被唤醒(找到整形对象的图纸)。

2.根据Integer  class 这个图纸,在内存中开辟一段空间(得到对象ID),并填充入对象的ID和类型和值。相当于房子已经建好,装饰完毕,家具齐全。

3.万事俱备,只欠东风,如果想住进去,还要有房子的钥匙。这个时候,变量名其实就是我们的钥匙。

如果值是相等的,那么之开辟一次空间。

总结:Python中的变量名,只有一个访问对象的钥匙,多个不同变量,完全可以访问相同的对象,因此我们把这种对象名叫引用。

思考:

1.空间考虑:比如一个数字2,在Python中只有这一个数字2,而C/C++中得有很多。

2.时间考虑:比如a=b.这样的赋值,只是修改了一下标签的位置,不需要对对象进行深拷贝。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值