可变类型与不可变类型
2022/3/9 23:15:00
本文主要是介绍可变类型与不可变类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
可变类型:列表就是典型
可变类型简而言之就是本身在地址不变的情况下可以改变内部所储存的数据。在数据更新的过程中不会占用多余的内存空间,也不会返回新的文件。
list_name = ['oliver', 'age', 'hobby', '16'] print(id(list_name)) # 生成列表的第一个元素地址 list_name[0] = 'barkie' # 修改第一个元素的数据为'barkie' print(id(list_name)) # 生成列表的第一个元素地址 print(list_name)
可以注意下这里列表内的元素已经发生更改,但是列表的地址并没有改变
list_name = ['oliver', 'age', 'hobby', '16'] list_name_add = ['kevin', 'justin', 'biber', 'faker'] print(list_name.extend(list_name_add)) # 在原有的列表里进行更改,并没有生成新文件,所以输出这个结果应该为空,并没有返回值 print(list_name)
这里直接输出合并列表那个命令,结果为None,也就表示并没有获得返回值,反而访问原变量名获得更改后的返回值
可变类型变量名在更改数据时的指向流程
在对可变类型数据进行更改时,变量名的指向并不会改变,而是在数据内部进行更改,数据并没有离开储存它的区域,有没有产生新的文件,只是根据对数据的更改加了索引值或者删除了索引值
不可变类型:字符串是典型
类似于可变类型,不可变类型就是改变内部存储数据的时候地址一定会改变。在数据更新的过程中会产生新文件,占用更多的内存空间。
str_name = '###oliver###' print(str_name.strip('#')) # 结果为oliver print(str_name) # 结果为###oliver### # 也就是在字符串中的去除指定字符的操作会产生新文件,不会对原字符串进行更改
注:如果对不可变类型数据进行处理后,还要用原来变量名的,那么就必须切断变量名原来的指向,指向新产生文件的路径
str_name = '###oliver###' print(id(str_name)) # 查看变量名指向的地址 str_name = str_name.strip('#') print(id(str_name)) # 查看变量名指向的地址
注:变量名地址已经发生更改,即产生了新文件
不可变类型变量名在更改数据时的指向流程
在对原数据进行更改操作时,原来的数据不变,会生成一个新的数据,即下方红箭头指向的数据,原来的指向也会断开。
结束
这篇关于可变类型与不可变类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04百万架构师第六课:设计模式:策略模式及模板模式
- 2025-01-04百万架构师第七课:设计模式:装饰器模式及观察者模式
- 2025-01-04适用于企业管理的协作工具API推荐
- 2025-01-04挑战16:被限流的CPU
- 2025-01-03企业在选择工具时,如何评估其背后的技术团队
- 2025-01-03Angular中打造动态多彩标签组件的方法
- 2025-01-03Flask过时了吗?FastAPI才是未来?
- 2025-01-0311个每位开发者都应知道的免费实用网站
- 2025-01-03从REST到GraphQL:为什么以及我是如何完成转型的
- 2025-01-03掌握RAG:从单次问答到连续对话