python函数之一:函数传入可变和不可变对象,要注意
先说对象类型,再说函数传入不同类型需要注意的地方
1、python对象类型
- 不可变对象:数字、字符串、元组、布尔(编辑属于新建对象)
相同数据占用一块内存
如:a=1; b=1; a和b的内存地址一样,就一个对象1,没有创建新对象(没有开辟新内存)
编辑对象
如:a=1; a=2; 等于创建新对象(开辟新内存)
- 可变对象:列表,集合,字典(编辑属于原地操作)
一个对象占一块内存
如:a=[1,2]; b=[1,2]; a和b的内存地址不一样,两个新对象(开辟2块新的内存))
编辑对象
如:a=[1,2]; a.append(3); a的内存地址不变,还是一个对象(内存扩充)
不可变对象的理解
可变对象的理解
2、函数传入不同类型对象(传入后一般对象都会经过加工)
- 传入不可变对象:加工后原来的对象不变。
相同数据占用一块内存 - 传入可变对象:加工后改变原来的对象。
未生成新对象,再次使用被影响后的对象,要特别注意已经发送变化
传入不可变类型对象-原对象不变
传入可变类型对象-原对象变化