Python经验主义学习之路——可变对象和不可变对象

可变对象与不可变对象

数据类型和变量

Python的数据类型和C++几乎相同,但是变量的概念和C++/C目前来看有一点差别(但在汇编的角度上看,和汇编中的变量概念差不多),在C/C++中,我们可以把变量在逻辑上抽象成一个带有名字的盒子,如下简单代码。

int main(void){
    int a;
    a = 5;
    a  = 6;
}


其中a相当于一个可以存放数据的盒子,在高级的逻辑层面上,可以这么认为,在内存中创建了个叫 a 的盒子,这是盒子里是空的(任意的),之后在里面放入了5,之后又将6放入盒中,覆盖了5。但是在汇编层面上a其实是一个地址。

在Python中,变量a 就是一个名字,一个指针。该指针指向了一个对象。在Python中我目前是这样理解的一个对象是特定地址的数据,数据类型这个概念是对于变量指向的对象来说的(只有对象才有数据类型这个概念)。比如 5 这个 a指向的对象是 int类型,6这个a指向的对象是int型,而不是说 a 是int 型,a只是一个变量,只是一个指针而已。

list 和 tuple认识可变对象和不可变对象

接着上文。可变或者不可变是对于 一个内存中创建的对象来说的,一个确定的变量 有两种分类,一类为 可变对象。一类为不可变对象。不可变对象 对象占据的内存空间中的内容不可变。比如5在5的房间里永远为5,不能变6或者‘abc'。看下面的Python代码。
a = 5 ; 
a = 'abc'

a开始指向了5,之后又指向了'abc',似乎a变了,但是内存中的 5 , abc本身的内容并没有发生改变。
关于 list 和 tuple 的探讨。详见 点击打开链接
其中,list和tuple作为复合对象, l其中List为可变对象,tuple为不可变对象。list和tuple的实质是装着内存地址,说他们变或者不变实质是指向的变或者不变。但他们指向的内容变或者不变就是另一回事情了。






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值