python参数内存地址
python参数内存地址
1.参数内存地址
查看某个值在内存中的地址
v1=123
id(v1)
函数值执行参数时,传递的是内存地址
#函数执行传参,传递的是内存地址
def func(data):print(data,id(data)) #wxy 2631904099312
v1='wxy'
print(v1,id(v1)) # wxy 2631904099312
func(v1)
python参数(传递内存地址)这个好处:
节省内存
对于可变类型在函数中修改元素内容,所有的地方都会修改【可变类型:list,dict,set】
#传入的参数是可变类型时;list/dict/set,在函数内部只能对内部元素进行修改 def func(data):data.append(11) data_list=[1,2] func(data_list) print(data_list) #[1, 2, 11]#可变类型 & 重新赋值 def func(data):data=[3,4]#重新开辟一个内存空间,将data指向这个空间,data_list没有变化 data_list=[1,2] func(data_list) print(data_list) #[1,2]#不可变类型,无法修改内容,只能重新赋值 def func(data):data=2 v1=1 func(v1) print(v1) 1
在其他编程语言执行函数时,默认传参时会将数据重新拷贝一份【会浪费内存】
注意:其他语言也可以通过ref等关键字来实现传递内存地址
如果不想将外部的变量和函数内部参数变量内存地址一致,可以选择将外部变值拷贝一份,再传递给函数
import copy
#不想修改传递的参数的值,可以进行拷贝赋值给另一个变量,传递给函数
def func(data):data.append(11)
data_list=[1,2]
new_list=copy.deepcopy(data_list)
func(new_list)
print(data_list) #[1, 2]
print(new_list) #[1, 2, 11]
2.函数返回值是内存地址
def func():data=[11,22,33]return data
v1=func()
print(v1) #[11,22,33]
- 执行func函数
- data=[11,22,33]函数内创建一块内存区域,内部存储[11,22,33],data变量指向这块内存地址
- return data,返回data指向的内存地址
- v1接收返回值,即v1和data都指向[11,22,33]的内存地址(两个变量指向此内存,引用计数器为2)
- 函数执行完毕,函数内部变量全部释放(即:删除data变量,内存地址引用计数器-1)
最终,v1指向的函数内部创建的那块内存地址
def func():data=[11,22,33]return data
v1=func()
print(v1,id(v1)) #[11,22,33],1111000000
v2=func()
print(v2,id(v2)) #[11,22,33],1111001111
#v1,v2内存地址不同,因为函数执行完毕内部变量全部释放,所以下一次调用会重新创建内存地址
python参数内存地址相关推荐
- python查看内存地址的内容_python中如何查看指定内存地址的内容
python中一般并不需要查看内存内容,但作为从C/C++过来的人,有的时候还是想看看内存,有时是为了验证内容是否与预期一致,有时是为了探究下内存布局. from sys import getsize ...
- python获取内存地址上存储的值
在python中,可以通过id()这个方法来获取对象的内存地址. 但是反过来,怎么获取内存地址上存储的值? 先看一段代码: from ctypes import string_at from sys ...
- python查看内存地址
1.查看python内存地址 python 通过id查看内存地址 eg: a=1 print(id(a))#输出94486697843200 2.不可变量 不可变对象是指对象的内存值不能被改变.Pyt ...
- Python 如何查看内存地址
python 查看内存地址很简单,使用内置函数id 下面看下使用 a = 1024 print("a的内存地址为:%s" % id(a)) b = 1024 print(" ...
- [转]关于内存地址的个人理解和操作原理
[转]关于内存地址的个人理解和操作原理 发表于:2007年3月22日 15时55分13秒阅读(0)评论(0) 本文链接:http://user.qzone.qq.com/185591848/blog/ ...
- python内存地址不变,关于python内存地址问题
遇到一个朋友,给我提了一个问题:python中的两个相同的值,内存地址是否一样? 当时印象里有这样一句话:Python采用基于值的内存管理模式,相同的值在内存中只有一份 于是张嘴就说是一样的 朋友说不 ...
- php 打印变量内存地址_Python合集之Python变量
在上一节的合集中,我们了解了Python的保留字与标识符,本节我们将进一步了解一下Python中关于变量的问题. 变量严格意义上来讲应该称之为"名称",也可以理解为标签. 在Pyt ...
- python查看变量内存地址的内置函数是_查看变量内存地址的Python内置函数是____...
查看变量内存地址的Python内置函数是____ 答:id() 产妇乳汁分泌主要依赖于 答:哺乳时吸吮刺激 下列选项中,属于"路径面板"中的工具按钮的是 答:用前景色填充路径 用画 ...
- python 查看变量内存地址
1.代码: Python id() 函数 | 菜鸟教程 id()函数返回10进制地址 Python hex() 函数 | 菜鸟教程 hex()函数将10进制地址转为16进制 #!/usr/bin/py ...
最新文章
- 《预训练周刊》第8期:首个千亿中文大模型「盘古」问世、谷歌等提出视频音频文本转换器VATT...
- 试题集 - 算法与编程
- SAP Cloud for Customer(C4C)前台显示的数据是如何从后台读取的
- hihocoder-Week243-hiho字符串
- 打开方式中选择默认方式无反映_「Windows」得看,更改文件的默认应用,告别“打开方式”...
- ejb 2.0 3.0_定义EJB 3.1视图(本地,远程,无接口)
- python视频人脸检测_Python基于OpenCV实现视频的人脸检测
- 【官方方法】MacBook2017 双系统恢复macOS High Sierra
- 一个三年Java程序员的面试总结!
- 解决办法:configure: error: C compiler cannot create executables错误
- DELPHI2007 安装ACTIVEX插件的方法
- NX/UG二次开发—装配—抑制的组件怎么获取原型
- springboot获取到的MySQL数据少了8小时
- MATLAB连接comsol后MATLAB语言方法
- Mac CAD 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
- gitbook:gitbook-cli\node_modules\npm\node_modules\graceful-fs\polyfills.js
- Linux系统文件加密与解密应用
- matlab绘制垂线(x轴或y轴)
- 汇承4.0蓝牙BLE串口助手HC-COM的使用方法及出错的原因和改正方法
- 在百度Create 2021大会聆听李彦宏,王海峰“论道”AI