博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的传值和引用
阅读量:6429 次
发布时间:2019-06-23

本文共 438 字,大约阅读时间需要 1 分钟。

内容不对请指正!十分感谢!

python中一切皆对象。

当我们赋值时: a = 1 

其实是先创建了一个整数常量1(也是一个对象,且已经为它分配了内存),然后将它的地址传递给了a

当我们将a的值赋值给b时: b = a ,其实也是将1的地址传递给了b

接下来查看a和b的地址

id(a)id(b)

会发现两者相同

所以如果执行 a = 2 ,a的地址就会改变,再执行 a = 1 之后,a的地址又会变成原来的值

而当操作自己定义的class类实例的时候

变量名亦是存储的地址,赋值与值的改变也是传递的地址,基本上都相当于引用,单纯的传值其实也是变相分配新内存。

比如执行

a = [1,2,3]b = a[:2]id(a)id(b)

id(a)和id(b)就会相差甚远,因为在创建b的时候其实是将a的列表中的元素先切片切出来之后再分配一个新的内存空间给它,再将其地址传给b。

转载于:https://www.cnblogs.com/Mu001999/p/6227994.html

你可能感兴趣的文章
Kubernetes的污点和容忍(下篇)
查看>>
[解题报告]10038 - Jolly Jumpers
查看>>
使用samba搭建便利的web开发环境
查看>>
TEST DESIGN TECHNIQUES: AN OVERVIEW
查看>>
线段树模板
查看>>
第94天:CSS3 盒模型详解
查看>>
HDU 2200
查看>>
关于函数参数
查看>>
iOS--Runtime--Method Swizzling
查看>>
Oracle - 函数
查看>>
牧师与修女的那些事
查看>>
安全加固SELinux
查看>>
pyramid安装和开始
查看>>
在Pyramid的Mako模板中引入helper
查看>>
SqlServer 重置自动编号起始值
查看>>
mysql数据导入导出语句
查看>>
Android 动态类加载
查看>>
sql中的in与not in,exists与not exists的区别
查看>>
百度Ueditor在Nginx环境下目录创建问题
查看>>
PHP error_log() 函数
查看>>