1. 什么是不可变类型
变量对应的值中的数据是不能被修改,如果修改就会生成一个新的值从而分配新的内存空间。
不可变类型:
数字(int,long,float)
布尔(bool)
字符串(string)
元组(tuple)
案例一
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005205937507-216446963.png)
结果:
两个不同的数字
案例二:
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005205948875-345750686.png)
结果:
两个不同的数字
2. 什么是可变类型
变量对应的值中的数据可以被修改,但内存地址保持不变。
不可变类型:
列表(list)
字典(dict)
案例一:
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005210001409-846800532.png)
结果:
两个相同的数字
['刘备', '关羽', '张飞', '赵云
案例二:
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005210024147-69823673.png)
结果:
两个相同的数字
{'name': '刘备', 'age': 20}
3. 为什么生成以上两种情况
因为python中的值是通过引用(地址值)传递的,不可变类型的值一旦被修改后会创建一个内存空间并且生成新的地址值,可变类型的值会在原内存空间中被修改。
4. 不可变类型执行过程和内存分析
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005210038421-420160051.png)
![](https://img2020.cnblogs.com/blog/705632/202010/705632-20201005210048039-951882440.png)
感谢源码时代教学讲师提供此文章!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31544234/viewspace-2157363/,如需转载,请注明出处,否则将追究法律责任。