涵数的默认设置主要参数 假如为空数组:
def default_para_without_trap(para=[], value=0): print(id(para)) para.append(value) print(id(para)) return para print('第一步') print('函数返回值:{}'.format(default_para_without_trap(value=100))) print('第二步') print('函数返回值:{}'.format(default_para_without_trap(value=50)))
結果:
第一步
1652247234376
1652247234376
函数返回值:[100]
第二步
1652247234376
1652247234376
函数返回值:[100, 50]
能够看得出偏向的全是同一个内存地址,由于数组是可变性器皿 ,里边的值发生改变,但偏向的内存地址沒有发生改变,因此 第二次启用的是第一次早已加上了数据信息的数组。
而不能变基本数据类型 ,因为它的值是假如更改了,内存地址还要相对的转变,因此 不容易存有这类状况 。
因此 应当在每一次启用时复位
def default_para_without_trap(para=None, value=0): print(id(para)) if para is None: para = [] print(id(para)) para.append(value) print(id(para)) return para print('第一步') print('函数返回值:{}'.format(default_para_without_trap(value=100))) print('第二步') print('函数返回值:{}'.format(default_para_without_trap(value=50)))
第一步
1809481008
1743164737352
1743164737352
函数返回值:[100]
第二步
1809481008
1743164737352
1743164737352
函数返回值:[50]