引用概念
**变量 和 数据 **都是保存在内存中的在 python 中,函数 的参数传递和返回值 都是靠 引用 传递的**变量 **和 数据是分开存储的数据 保存在内存中的一个位置变量 中记录数据的地址,就叫 引用使用** id() ** 函数可以查看变量中保存数据所在的 内存地址注: 如果变量已经被定义,当给一个变更 重新赋值的时候,本质上是 修改了数据的引用
**示例
**
a=1print(id(a))print(id(1))b=aprint(id(b))a=2print(id(a))输出结果:从这里面可以看出 前三个的内存地址是一样的
**函数的参数传递与返回值的引用
**
def test(num): print(传递的值是:%d,内存地址是:%d %(num,id(num))) result=test print(返回的值是:%s,内存地址是:%d %(result,id(result))) return resulta=1print(需要传递的参数的值是:%d,内存地址是:%d%(a,id(a)))ss=test(a)print(调用函数获取的返回值是:%s,内存地址是:%d %(ss,id(ss)))**输出结果
**
结论:从结果中可得知,在调用函数时,传入的变量,实际上是将变量的引用内存地址 传递进去了。函数在返回时,同样是将变量对应的 引用 返回出来了
可变和不可变类型不可变类型,即内存中的数据不允许被修改数字类型:int 、bool、float、complex、long字符串 str元组 tuple可变类型,即内存中的数据可以被修改列表 list字典 dict集合 set示例
# 不可变数据类型a=1print(内存地址是:%d %id(a))a=2print(内存地址是:%d %id(a))#可变数据类型b=[1,2,3]print(内存地址是:%d %id(b))b.append(4)print(值是:%s,内存地址是:%d %(b,id(b)))#如果重新用 = 赋值,则会新建一块内存地址b=[]print(新内存地址是:%d %id(b))输出结果
结论:
可变类型的数据变化,是通过方法来 实现的如果给一个可变类型的变量,赋值了一个新的数据,引用的地址则会不同**哈希(hash)
**
python 中内置有一个名字叫做 hash() 的函数接收一个 不可变类型 的数据作为参数返回 结果是一个整数哈希是一种算法,其作用就是提取数据的特征码(类似指纹)相同的内容 得到 相同的结果不同的内容 得到 不同的结果在 python 中,设置字典的键值对时,会首先对 key 进行 hash ,用来决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查键值对的 key 必须是不可变类型的数据键值对的 value 可以是任意类型的数据# 对同一个不可变的数据类型,hash 两次,得到的结果是一样的print(hash(123))print(hash(123))输出结果
山西省高速首座利用公路闲置资源的光伏项目实现并网发电
云听与华为携手加快在智能座舱领域的布局
采用S3C44BOX微处理器的型防伪读码器设计
贴片磁珠有什么作用
电机如何选择交流接触器
Python-变量的引用与可变
一名IT工程师的谷歌毕业实习经历回忆
EV充电器中的宽带隙应用
PLC编程的移植设计法
人工智能可以根据您的自拍照识别您的个性
小米6最新消息:小米6天时地利人和首发骁龙835,小米平板3配置性价比大升级
如何做晶圆切割(划片),晶圆切割的工艺流程
怎么使用C语言控制硬件
示波器操作和使用指南
正海集团与罗姆就成立合资公司达成协议,主营以碳化硅为核心的功率模块业务
曝联发科6nm芯片将支持160Hz+高刷新率
5G+物联网如何让城市更智慧
室内强弱电电路布线及电器、灯具安装
新思科技Synphony HLS解决方案
在RGB显示器中生成一致的LED亮度