python中的赋值

来源:互联网 发布:学python还要学hadoop 编辑:程序博客网 时间:2024/06/04 23:31

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(内存中:一部分表明对象类型;一部分表明有几个引用指向了自己),那么就是没有对象指向它了,那么就会被垃圾回收\了。





0 0
原创粉丝点击