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时 ,它被垃圾回收。 ·内存池:目前暂不讨论
时间: 2024-10-09 15:34:16