python中的赋值

a=2

b=3

这个时候,a==b和a is b 打印的都是True。因为a和b指向了同一个对象


a=[]

b=[]

而这个时候,a==b打印的是True,a和b的对象相同,但是a is b 打印的是False,因为没有指向同一个对象


a=[0]

b=a

a[0]=1

print  b[0]

打印的为1,a==b和a is b 打印的都是True。


究其原因:

1 python里的不变类型:整型,字符串,元组;正好包含整型

2 python的列表为可变型

3python的赋值语句包含了三个含义:

例子:a=2:

    首先在内存创建一个对象叫做2

    然后创建一个对象叫做a,也就是大家认为的变量。

                            最后=意味着将一个引用从a指向2。

    a=2语句运行完成。

然后大家又会问了:

a=2

b=2

这个会发生什么事情:

        a=2解释过了

b=2也是这样的,只不过因为整型是不可变型,在内存中缓存了2,所以第一步省略了,直接将b指向了2

然后又会问了:

如果这个时候这样:

             b=3

会怎么样:

            b会指向对象3,a依然指向2

然后如果这个时候:

a=1

        那么这个时候2的内部的引用计数器发现为0(内存中:一部分表明对象类型;一部分表明有几个引用指向了自己),那么就是没有对象指向它了,那么就会被垃圾回收\了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值