涵数的默认设置主要参数 假如为空数组:

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]

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归趣快排www.sEoguruBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ✈61910465