搞懂可变和不可变内置对象有利于理解函数参数的副作用
- 那些是可变对象?那些不可变?
- 不可变对象bool/int/float/tuple/str/frozenset
- 可变对象list/set/dict
小测试:输出什么结果?
def clear_list(l): l = [] ll = [1,2,3] clear_list(ll) print(ll) ------[1, 2, 3]
python可变参数作为默认参数。
!!!记住默认参数只计算一次
def flist(l = [1]): l.append(1) print(l) flist()------[1,1] flist()------[1, 1,1]
i = 73
i+=2
修改对象的值,并不会在原来的内存地址中对值进行修改,而是会在一块新的内存区域内创建新值,然后将原变量指向新地址,原内存区域内的对象也不会发生变化,也就是原来位置上还是73,他之后会被python当做垃圾进行回收,这就是不可变对象。



