当前位置: 首页 > news >正文

python-引用

引用

一、引用

1、 引用的概念
引用是一种变量指向数据存储空间的现象
内存地址是数据在物理内存中的存储位置
引用地址是对象在内存中的描述性地址,该地址与内存地址有区别
2、引用特征
相同的数据在内存空间中仅占用一个存储空间,不同的变量使用相同的数据则指向相同的存储空间。
3、获取内存存储地址(编号)
语法格式:
id(数据)
id(变量名)
复制代码

代码演示:

a = 2
print(id(2))
print(id(a))
复制代码

运行结果:

1993501472
1993501472
复制代码
4、地址存储特殊性

使用固定内存地址存储数据如下:

-5 到 256的整数
True 和 False
由字母、数字、下滑线组成的字符串
复制代码

使用临时内存地址存储数据如下:

小于 -5 后大于 256 的整数
所有小数
包含字母、数字、下滑线之外的字符组成的字符串
复制代码

二、列表引用

1、列表存储空间
无变量引用
列表保存在临时引用地址中,该引用地址可以反复使用
复制代码
有变量引用
列表保存在独立引用地址中,该引用地址专用,每个列表对象具有独立的引用地址
复制代码
2、列表存储空间变更
1、列表变量指向引用地址,该引用地址中保存有存储列表信息的内存地址。
2、当列表中存储数据的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。
3、重新申请的内存地址将复制原始内存地址中的数据。
3、列表中的数据存储
1、列表中存储的数据都是数据对应的内存地址,没有真实数据
2、列表中的数据是通过引用地址的形式查找真实数据

三、元组引用

1、元组存储空间
空元组(无数据)
空元组指向统一的独立引用地址,所有空元组共用同一个引用地址
复制代码
非空元组(有数据)
非空元组保存在独立引用地址中,每个元组对象具有独立引用地址
复制代码
  • 注:由于元组不支持修改,不存在重新申请空间的问题,元组创建的同时存储的数据已经固定,内存结构也固定。
2、元组中的数据存储(同列表)
1、元组中存储的数据都是数据对应的内存地址,没有真实数据
2、元组中的数据是通过引用地址的形式查找真实数据
  • 注:元组不支持修改,但是元组中的数据如果是引用类型的,对应的数据可以在自身的内存地址中进行数据变更,对元组不影响。

四、集合引用(同列表)

1、集合存储空间
无变量引用
集合保存在临时引用地址中,该引用地址可以反复使用
复制代码
有变量引用
集合保存在独立引用地址中,该引用地址专用,每个集合对象具有独立的引用地址
复制代码
2、集合存储空间变更
1、集合变量指向引用地址,该引用地址中保存有存储集合信息的内存地址。
2、当集合中存储数据的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。
3、重新申请的内存地址将复制原始内存地址中的数据。
3、集合中的数据存储
1、集合中存储的数据都是数据对应的内存地址,没有真实数据
2、集合中的数据是通过引用地址的形式查找真实数据

五、字典引用(同列表)

1、字典存储空间
无变量引用
字典保存在临时引用地址中,该引用地址可以反复使用
复制代码
有变量引用
字典保存在独立引用地址中,该引用地址专用,每个字典对象具有独立的引用地址
复制代码
2、字典存储空间变更
1、字典变量指向引用地址,该引用地址中保存有存储字典信息的内存地址。
2、当字典中存储数据的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。
3.重新申请的内存地址将复制原始内存地址中的数据。
3、字典中的数据存储
1、字典中存储的数据都是数据对应的内存地址,没有真实数据
2、字典中的数据是通过引用地址的形式查找真实数据

六、对象引用

1、对象存储空间
无变量引用
对象保存在临时引用地址中,该引用地址可以反复使用
复制代码
有变量引用
对象保存在独立引用地址中,该引用地址专用,每个列表对象具有独立的引用地址
复制代码
2、对象中的变量数据
1、对象中的变量存储的都是对应数据的引用地址,没有真实数据
2、对象中的变量是通过引用地址的形式查找真实数据
3、对象中的变量存储形式是一个字典的形式,对变量的操作参照字典的操作方式,变量名为字典的key,变量值为字典的value

七、可变类型与不可变类型

1、基本概念
数据存储空间中的数据可以发生变化的数据称为可变类型数据
数据存储空间中的数据不能发生变化的数据称为不可变类型数据
2、分类
可变类型数据
  • 列表
  • 集合
  • 字典
  • 对象
不可变类型数据
  • 数值
  • 字符串
  • 布尔
  • 元组
3、函数调用时的实参
函数的实参使用可变类型数据时,在函数内部对形参进行数据操作,实参将发生改变
函数的实参使用不可变类型数据时,在函数内部对形参进行数据操作,实参将不会发生改变
4、函数定义时的形参
条件1:函数形参使用默认参数
条件2:函数调用时未对默认参数传值
条件3:函数的形参使用可变类型数据
上述3个条件同时满足时,多次调用对应函数时,操作的形参是同一个对象 
复制代码

转载于:https://juejin.im/post/5c18ba48f265da61327f3fcc

相关文章:

  • pip install whl
  • 手动回滚事物
  • 栈-初识
  • 医疗保健行业中的区块链
  • Grace Ex与您携手共赢,迎接数字经济时代的到来
  • Spark RDD与MapReduce
  • 企业项目开发--切分配置文件
  • node下使用jquery
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • Analytics Zoo:在Apache Spark上实现分布式Tensorflow和BigDL管道的统一分析和AI平台
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • oracle问题 ORA-01843:not a valid month
  • 退款证书相关
  • 如何将本地文件上传至阿里云ECS中
  • React 作者关于 Hooks 的深度 issue,值得你阅读
  • [case10]使用RSQL实现端到端的动态查询
  • [译] 怎样写一个基础的编译器
  • 2017-09-12 前端日报
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • javascript数组去重/查找/插入/删除
  • Java面向对象及其三大特征
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS字符串转数字方法总结
  • KMP算法及优化
  • mockjs让前端开发独立于后端
  • Python实现BT种子转化为磁力链接【实战】
  • Redis在Web项目中的应用与实践
  • RxJS: 简单入门
  • scala基础语法(二)
  • SegmentFault 2015 Top Rank
  • tensorflow学习笔记3——MNIST应用篇
  • TypeScript迭代器
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 动态规划入门(以爬楼梯为例)
  • 后端_ThinkPHP5
  • 思维导图—你不知道的JavaScript中卷
  • 小程序button引导用户授权
  • 怎样选择前端框架
  • 正则与JS中的正则
  • 【云吞铺子】性能抖动剖析(二)
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)bark-ml
  • (2)nginx 安装、启停
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)二分查找 超详细
  • (Note)C++中的继承方式
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (接口封装)
  • (四)JPA - JQPL 实现增删改查
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一) storm的集群安装与配置
  • (一)80c52学习之旅-起始篇