一、python中变量的赋值
python中的数据类型分为可变数据类型(字符串、数值、布尔型)、不可变数据类型(列表、字典、集合)。
不可变数据类型的赋值,都只是对象的引用,不会开辟新的内存空间;可变数值类型的赋值,则会开辟新的内存空间。如果可变数据类型
中包含有不可变数据类型,则可变数据类型部分也不会开辟新的空间。如下:
二、浅拷贝和深拷贝
对于不可变数据类型而言,无论深拷贝和浅拷贝,都不会开辟新的内存空间。只是对可变数据类型才有深浅拷贝之分。
1、浅拷贝
结论:浅拷贝只拷贝最外面一层,即只对最外面的数据分配内存,但是数据内层的可变数据类型对象不会分配新的空间,还是指向旧的数据对象。
2、深拷贝
结论:深拷贝不管内层有多少个嵌套的可变数据类型,都会单独分配内存空间。
例子:
3、例外--元组
元组只有深拷贝才会分配新的内存空间,浅拷贝会不会分配新内存。
三、is和==
结论:is是判断变量指向的对象是不是同一个,==是判断指向对象的值是否相等。
[1] 参考链接:https://mp.weixin.qq.com/s?__biz=MzU0NjgzMDIxMQ==&mid=2247569389&idx=4&sn=7f93a257c597821bb55da3e2637a3f3d&chksm=fb542d01cc23a4178b83617a01e933494ca6274dd2086baf2bd0354ac30637cc9af674458116&scene=27