pythonpython值传递问题和内存管理机制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pythonpython值传递问题和内存管理机制相关的知识,希望对你有一定的参考价值。
1)值传递问题
python中到底是"值传递"还是"引用传递",主要取决于对象是否是可变的. 1)函数传参: ·基本数据类型:int、float、str;元祖属于不可变对象;传递的是"原值"的拷贝 ·列表、字典、类、类实例属于可变对象;传递的是"值引用" 2)变量复制 ·python中的变量复制(a=b)也是同样的道理,不可变对象被真正复制;而可变对象只是传递了一个 "引用" 例子: a = 1 b = a,此时改变a的值不会改变b的值
2)内存机制
1)变量值在内存中存放 ·基本数据类型:int、str、float等,相同的值赋给不同的变量,内存地址是一致的; ·列表、元祖、字典,相同的值赋给不同的变量,内存地址是不一致的 例子: a = 1 b = 1 id(a)=id(b) 这个是成立的 a = [1,2] b = [1,2] id(a) = id(b) 这个是不成立的 2)内存管理机制 ·引用计数:追踪内存中的对象 当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时 ,它被垃圾回收。 ·内存池:目前暂不讨论
本文出自 “孔小发爱吃鱼” 博客,谢绝转载!
以上是关于pythonpython值传递问题和内存管理机制的主要内容,如果未能解决你的问题,请参考以下文章
javascript内存管理(堆和栈)和javascript运行机制
JavaScript性能优化1——内存管理(JS垃圾回收机制引用计数标记清除标记整理V8分代回收Performance使用)